5509

Site Search

jQueryでbackgroundPositionを取得するときの注意

$(‘hoge’).css(‘backgroundPosition’)だとIEで値が取れないんですね、不便か。

XとYを別々に取得したい

値の検証

var bgPosDef = $('#hoge').css('backgroundPosition');

IE8まで(9は未検証)

console: null(空)

Firefox, Chrome, Safari, Operaなど

console: 50px 50px

IEは返されるデータがない!こういうところがみんなが嫌いな所以ですかね。IEはbackgroundPositionではなくて、backgroundPositionXのようにXかYを指定して個別に引き抜きます。

var bgPosX = $('#hoge').css('backgroundPositionX');
var bgPosY = $('#hoge').css('backgroundPositionY');

XとYを取得する

計算を行う場合は、数値にしておく必要があるのでついでに。

var bgPos = bgPosDef.split(' '), // 半スペで分ける
// bgPos[0] == X, bgPos[1] == Y
bgPosX = bgPosY = 0;
bgPosX = bgPos[0].replace('px', '');
bgPosY = bgPos[1].replace('px', '');
// pxを削除する

IEはpxを削るだけです。

bgPosX = $('#hoge').css('backgroundPositionX').replace('px', '');
bgPosY = $('#hoge').css('backgroundPositionY').replace('px', '');

条件分岐で分ける

var bgPosDef = $('#hoge').css('backgroundPosition'),
  bgPosX = bgPosY = 0;
if ( bgPosDef ) { // backgroundPositionの値が取れた場合
  var bgPos = bgPosDef.split(' '),
  bgPosX = bgPos[0].replace('px', '');
  bgPosY = bgPos[1].replace('px', '');
} else { // 取れなかった場合
  bgPosX = $('#hoge').css('backgroundPositionX').replace('px', '');
  bgPosY = $('#hoge').css('backgroundPositionY').replace('px', '');
}

これくらいはjQueryで対応してくれてもいいような気がしないでもない。。

Twitterの@Anywhereを使ってつぶやけるだけのクライアントを作る

どんだけ話題に乗り遅れてるねんっていう話なんですけど、いまさら@Anywhereを使ってみました。

つぶやけるだけのTwitterクライアント – Only tweet

きっかけは、つぶやけるだけの俺俺クライアントがほしくて、Twitterの機能をJSで簡単に導入できる「@Anywhere」の使い方メモ – Rewishでなんとなく出来ることは読んでいた@Anywhereで十分やんじゃあつくれるな、という理由です。

はっきり言ってChrome(Windowsだけ)のアプリケーション登録がないとまったく使えないしょうもないやつです。でもアプリケーション登録すればキャプチャみたいに使えます。結構便利。

JavaScriptだけで作れるので、JavaScriptしかわからないけどちょっとやってみたい人にはちょうどいい感じかもです。

Read more

今までに公開したjQueryプラグイン

はじめに、この記事は役に立つリンク集ではないです。

ブログを初めて2年ちょっとが過ぎ、半年くらいやるやる言ってやらなかったexValidationもようやく公開できたのもあって、自分の中で一段落したので、今まで公開したプラグインの振り返り等も兼ねて書きました。

そもそもは誰かの役に立てばいいなと思って始めたブログなので(ほとんど役に立たないものだと思いますけど)もしかするともしかしてどこかで誰かの役に立てるものもあるかもしれません。

ところで最初のプラグインを公開したときは、(JavaScript的な意味で)それはもう何も知りませんでした。そんな感じで今でも恥ずかしいコードなんですけど、最初の頃はもっと恥ずかしいコードなんですね。だから見ないで…

Read more

どんなフォームにも使えるjQueryのフォームバリデーション exValidation

jquery.validation.jsというフォームバリデーションプラグインを公開していますが、使える場面が割と限定されてしまうような作りだったので、より幅広く使えるようにexValidationという名前で新しいjQueryプラグインとして作り直しました。伴って仕様や使い方が異なる部分も多いので、ドキュメントとして書いておきます。ただし前半のバリデーションルール周りは同じエンジンを使ってるので、ほぼ同じです。ちなみにすごい長いです。。

validation.jsにはあったけど、exValidationにはない機能はだいたい省いたものなので、こちらでの実装は基本的には行いません。それないと不便、、な機能があれば随時追加拡張していく予定なのでコメントでください。全ての要望には応えられませんので、、それだけ了承ください。

Read more

[訂正:間違い] formのaction先が異なる文字コードのときに文字化けさせない

10.08.03追記:この記事を見てくれた方へ
ごめんなさい、以下の内容は検索エンジン側が &charset=UTF-8 でパラメータを受け付けるときのみに有効な方法でした。つまり間違いです。

サイトの検索で外部検索エンジンを使うときなど、サイトはUTF-8なのに用意された検索エンジンはShift_JIS、、のようにサイトと検索エンジン側の文字コードが違う、というのはよくある話で、そうすると文字化けを起こします。

hiddenパラメータで文字コードを送る

そういうときはhiddenパラメータでサイト側の文字コードを埋め込んでおくといいです。

<input type="hidden" name="charset" value="UTF-8" />

以下のようにform要素に入れておきます。

<form action="hogehoge">
  <input type="hidden" name="charset" value="UTF-8" />
  <input type="text" name"text" value="" />
  <input type="submit" value="submit" />
</form>

accept-charset属性

formのaccept-charsetという属性で検索エンジン側の文字コードを指定することでも回避できるようですが、IEが未対応なようで、実用的ではないです。

Author

nori
nori
- Director
Location
- Osaka