JavaScriptの最近のブログ記事

Tomblooを愛用しているのですが、 最新にしてから20_model.jsの
1909行でエラるようになってしまいました。

調べてみると原因はpostkeyというのをlivedoorクリップから
取得するときにちゃんとクエリを渡せてないからでした。

具体的にはlinkというクエリに

http%3A%2F%2Ftombloo/

を渡してて、最後の「/」がエスケープされてないので
livedoorクリップがコケます。

ということで、

http%3A%2F%2Ftombloo%2F

に修正してやると問題なく動きます。
記事下にpatchを置いておきます。


ちなみにTomblooは、githubでソース管理をしてるんだけど、
こういった修正はどうお報せするのがいいんですかね。

github使ってるならこうしたら早いよ!っていうのがあれば教えて欲しいです。

--- 20_model.js.orig	2009-02-11 16:05:00.000000000 +0900
+++ 20_model.js	2009-02-11 16:03:48.000000000 +0900
@@ -1901,7 +1901,7 @@
 		
 		case 'changed':
 			var self = this;
-				return request(LivedoorClip.POST_URL+'?link=http%3A%2F%2Ftombloo/').addCallback(function(res){
+				return request(LivedoorClip.POST_URL+'?link=http%3A%2F%2Ftombloo%2F').addCallback(function(res){
 					if(res.responseText.match(/"postkey" value="(.*)"/)){
 						self.token = RegExp.$1;
 						return self.token;
いつもhttp://web.archive.org/のURLを忘れるのでメモ。
ついでに今見てるページのアーカイブが簡単に見られうようにBookmarkletにしておいた。

Web Archive

あたり前だけど検索したら、すでに多くの人が同じことをやっていたけど
覚え書きということで書いておく。

amachangさんの「一行で IE の JavaScript を高速化する方法」を見てて、見慣れない/*@cc_on なんちゃらなんちゃら @*/ って記述が気になった。

なんだろうとおもい、早速ぐぐってみたところ、ここに書いてありました。

@cc_onはステートメントというものらしく「条件付きコンパイルの機能をアクティブにします。」との説明があります。

でも、「条件付きコンパイル」ってなんだよ!そんなの知らないぜ!
ということで調べてみたら、以下のようなことが書いてありました。

条件付きコンパイルを使用すると、JScript の新しい言語機能を利用しながら、その新機能をサポートしていない以前のバージョンとの互換性も保持できます。JScript の新機能を使用する場合、スクリプトにデバッグサポートを埋め込む場合、コード実行をトレースする場合などは、条件付きコンパイルを使用するのが一般的です。

なるほど。ようは、条件付きコンパイルに対応していないブラウザには影響せずに、JScriptの新しい機能を使えちゃうぜ、ということらしいです。

ということでためしに以下のようなHTMLを書いて動作確認してみた。
<html>
<body>
<script type="text/javascript">
/*@cc_on document.write("Hello, JScript!"); @*/
</script>
</body>
</html>

このHTMLを各ブラウザで確認してみたところ、Internet Explorerで開くと「Hello, JScript!」とみごとに表示され、FirefoxやOperaだと表示されませんでした。

ちなみに「/*@cc_on」の /* と @ の間にスペース空けたり、@ と cc_on の間にスペースを空けても動きませんでした。ようは「/*@cc_on」のどこにもスペースは空けるなということですね。

この条件付きコンパイルは、こういう用途以外にもいろんな機能が使えるみたいですので、興味のある方はこちらの条件付きコンパイルの説明のページをご覧になってみてください。


ってここまで書いたけど、@cc_on ってもしや常識!?

検索

広告

OpenID対応しています OpenIDについて
Powered by Movable Type 4.22-ja