素人がプログラミングを勉強していたブログ

プログラミング、セキュリティ、英語、Webなどのブログ since 2008

連絡先: twitter: @javascripter にどうぞ。

linkのhrefを変えるとCSSをダイナミックに読み込んでくれる

ので、このブログを前のデザインで見たくなったら

javascript:document.getElementsByTagName('link')[5].href='/theme/nimbus/nimbus.css';void 0;

というブックマークレットを実行。

上のブックマークレットはおそらくどのはてなダイアリーでも使える。Greasemonkeyスクリプトにすればデザインを固定できる。

___defineSetter___とか___defineGetter__

事の発端

普通に値を返す関数とか、引数をセットする関数とか定義するのとなにが違うのかな・・・。

値を返す、セットする関数っていうのを明示するため?よく分からない。

HTMLElement.prototype.__defineGetter__('innerText',function()this.textContent);

document.body.innerText;

と思ったら関数じゃないから呼ぶときに()をつけなくていいのか。

でも、

HTMLElement.prototype.innerText=
(
function(){
return this.textContent;
}
)();
document.body.innerText;

じゃだめなのかな。と思ったらこれじゃ動かない。thisがwindowになっちゃう。

結論

やっぱ必要だ__defineGetter__。__defineSetter__も同じ。

Firefox Add-onsのページの紹介文がHTMLむき出しっぽくなっているのを直すGreasemonkey

Add-ons for Firefoxの上部。

// ==UserScript==
// @name           Firefox Add-ons fix
// @namespace      http://d.hatena.ne.jp/javascripter/ 
// @description    紹介文がHTMLむき出しっぽくなっているのを直す
// @include        https://addons.mozilla.org/ja/firefox/*
// ==/UserScript==

var pageIntro=document.getElementsByClassName('page-intro')[0];
pageIntro.innerHTML=pageIntro.textContent;

Infinity-InfinityはNaN

InfinityやNaNについて。
0でもInfinityでも-Infinityでもなく、NaNになる。

Infinity/0はInfinity
Infinity*0はNaN
Infinity/InfinityもNaN
0/Infinityは0
1/Infinityも0
使い道は特に見当たらない。

関係ないけど、
NaN==NaNはfalseになる。NaN!=NaNがtrueっていうのも納得がいかない。

isNaN(NaN)はtrueも、isNaN('foo')もtrue。