selectivizr.js で背景画像が消える

このエントリーを書いてるのが2014年3月28日。
腐った牛乳ことIE8もあと数日の命(サポート)でウヒャッホーイ♪

…なのにこのタイミングでIE8でトラブル発生orz

IE8でCSS3のセレクタを利用する為に selectivizr.js を読み込んでいるのですが、
一部背景が「一瞬表示されてすぐ消える病」を発症しました。

で、「selectivizr background」でググって多分これじゃないかというものを発見。
https://github.com/keithclark/selectivizr/issues/15

resolveUrl() was written to fully qualify relative urls for style sheets and @imports.Part of it’s job just is to return null if an unsafe url was requested,preventing security errors when requested css files from another domain

危険な別ドメインなんたらと書かれているのでCSSを確認してみると
画像をAmazonS3に置いている為、別ドメインへの絶対パスで書かれていたので
HTMLと同じサーバーに画像を移して相対パスに書き換えたら・・・おお、表示された!

ただ、これだと別サーバーの画像が参照できない。
selectivizr.jsの作者は「この問題を修正してコミットしたよ」とコメントして
いるものの、今現在の最新版(1.0.2)で症状が出ているのでどうしたものか…(何か見落としてる?)

一先ず背景画像をHTMLと同サーバーに設置してお茶を濁すことに(´・ω・`)

jsonのvalueに「||」(論理和)を使う

説明しづらいのでいきなりコードから

var obj = {
	data:"belka_strelka"
}

console.log(data); //belka_strelkaと表示される

これは誰でも知ってる「key:value」の形。

var obj = {
	data:function(){
		return "belka_strelka";
	}
}

console.log(data); //belka_strelkaと表示される

これもvalueに関数オブジェクトを持たせたよくある形。

で、今回初めて見た形がこれ。

var flag = true;
var obj = {
	data:flag || "belka_strelka";
	}
}

console.log(data); //trueと表示される

flag = false;
console.log(data); //belka_strelkaと表示される

value を「||(論理和)」で区切って複数指定する形。
一つ目の値が非(falseや0)だと次の値が参照されるらしい。
(仕組みはまったく理解できず。誰か教えて)

で、これが一体何の役に立つのかというと、複数の条件が正の場合のみ値を
返したい時などで使える・・・のか??

var f1 = true;
var f2 = true;
var f3 = true;
var obj = {
	data: !f1 || !f2 || !f3 || "belka_strelka"
}

console.log(data); //belka_strelkaと表示される

Javascriptのオブジェクトって様々な形をとれるのでしっかり理解していると
便利なんだろうけど、上級者のコードをさわると毎回理解できなくて泣けてくる><