【CSS】iPadだけにCSSを適用する方法

結論から言うとjavascriptでUserAgentを参照して振り分けるしかない。

linkやcss内の@mediaでどうにかなるもんだと思ってましたが。

<link rel="stylesheet" media="only screen and (max-device-width: 1024px)" href="../ipad.css" type="text/css" />
どうやら↑では”iPadオンリー”は無理です。 結局UserAgentを見るしかない。
var iPad = /iPad/.test(navigator.userAgent);
if(iPad){
//iPadだけに適用させたい記述
}

  長くなるので無理な理由、検証、iPadだけにcssを適用させるjsは以下に。
 
Den ganzen Beitrag lesen…

Node was not found” code: “8

swfobject2.2を使っているときに windows firefox3.5.8の環境化においてFirebugが以下のエラーをはく(自分の環境だけかもしれませんが) Node was not found” code: “8

たいした説明は出来ませんが非圧縮版の193行目付近が問題っぽい。 元のswfobject

    function testPlayerVersion() {
        var b = doc.getElementsByTagName("body")[0];
        var o = createElement(OBJECT);
        o.setAttribute("type", FLASH_MIME_TYPE);
        var t = b.appendChild(o);
        if (t) {
            var counter = 0;
            (function(){
                if (typeof t.GetVariable != UNDEF) {
                    var d = t.GetVariable("$version");
                    if (d) {
                        d = d.split(" ")[1].split(",");
                        ua.pv = [parseInt(d[0], 10), parseInt(d[1], 10), parseInt(d[2], 10)];
                    }
                }
                else if (counter < 10) {
                    counter++;
                    setTimeout(arguments.callee, 10);
                    return;
                }
                b.removeChild(o);
                t = null;
                matchVersions();
            })();
        }
        else {
            matchVersions();
        }
    }
これの
b.removeChild(o);
でなぜかノードがねえすwwwってなってるので改造。 改変したswfobject
    function testPlayerVersion() {
        var b = doc.getElementsByTagName("body")[0];
        var o = createElement(OBJECT);
        o.setAttribute("id", FLASH_DUMMY_ID);
        o.setAttribute("type", FLASH_MIME_TYPE);
        var t = b.appendChild(o);
        if (t) {
            var counter = 0;
            (function(){
                if (typeof t.GetVariable != UNDEF) {
                    var d = t.GetVariable("$version");
                    if (d) {
                        d = d.split(" ")[1].split(",");
                        ua.pv = [parseInt(d[0], 10), parseInt(d[1], 10), parseInt(d[2], 10)];
                    }
                }
                else if (counter < 10) {
                    counter++;
                    setTimeout(arguments.callee, 10);
                    return;
                }
                b.removeChild(doc.getElementById(FLASH_DUMMY_ID));
                t = null;
                matchVersions();
            })();
        }
        else {
            matchVersions();
        }
    }
idをつけて、getElementByIdで直接指定してリムーブ。 ちなみにFLASH_DUMMY_IDは頭のほうで変数追加 元のswfobject
    var UNDEF = "undefined",
        OBJECT = "object",
        SHOCKWAVE_FLASH = "Shockwave Flash",
        SHOCKWAVE_FLASH_AX = "ShockwaveFlash.ShockwaveFlash",
        FLASH_MIME_TYPE = "application/x-shockwave-flash",
改変したswfobject
    var UNDEF = "undefined",
        OBJECT = "object",
        SHOCKWAVE_FLASH = "Shockwave Flash",
        SHOCKWAVE_FLASH_AX = "ShockwaveFlash.ShockwaveFlash",
        FLASH_MIME_TYPE = "application/x-shockwave-flash",
        FLASH_DUMMY_ID = "SWFObjectDummy",

これで動くようにはなった。

【javascript】「。」を「(キリッ 」に置換するブックマークレット

「ツイート」を「ツイート(笑)」に置換するブックマークレット というものがあるので http://d.hatena.ne.jp/amachang/20091105/1257399754 を改造して。

javascript:var d=document,r=d.evaluate('//text() [contains(.,"。")]',d,null,7,null),i=0;while(d=r.snapshotItem(i++))d.data=d.data.replace(/。/g,'(キリッ ');void(0);

できた(キリッ

Xpathを覚えよう。 https://developer.mozilla.org/ja/Introduction_to_using_XPath_in_JavaScript

【javascript】現在が朝昼夕晩のいつかを求める

指定した時間になったら指定した背景を替えるjavascriptを作っていて。 朝:5時から8時 5以上8以下 昼:9時から16時   9以上19以下 夕:17時から20時  17以上20以下 晩:21時から4時   21以上4以下 と時間を決めてコードを書いて。分岐文を書く際にいろいろ試行錯誤しているのでメモ

var date = new Date(),
 h = date.getHours(),
 n = '';
ここまでは共通。サーバータイムとるほどの仕組みでもないのでローカルタイム。しかも分秒は気にしない。

if文を使った分岐

if(h>=5 && h<=8){            //5-8
   n = "morning";
 }else if(h>=9 && h<=16){     //9-16
   n = "noon";
 }else if(h>=17 && h<=20){    //17-20
   n = "evening";
 }else{                       //21-4
   n = "night";
 }

三項演算子を使った分岐

n = (h>=5 && h<=8)?  "morning" :
      (h>=9 && h<=16)? "noon":
      (h>=17 && h<=20)?"evening":"night";
見やすいしすっきりしたからこれかなぁ。なんとなく不安が残るけども。

うのくんが考えた別のアプローチの仕方

うのくん: hを4で割って切り上げ 5時から8時 切り上げで2 9時から16時    切り上げで3,4 17時から20時   切り上げで5 21時から24時    切り上げで6 0時から4時     切り上げで1 こうだね n = nn[Math.ceil(h/4)-1]; なのでこうだね

var nn = ["night", "morning", "noon", "noon", "evening", "night"];
  n = nn[Math.ceil(h/4)-1];
おお。。短い。 変数増えたり、マジックナンバー使ってるあたりがネックなので ごめんね今回は不採用。 ただ同じ結果でも別の書き方を見ると感激するなぁ。うむうむ。