Lunascape Gecko モードでは createElement() で JavaScript を追加してアレコレするタイプのブックマークレットは動かないことがある
タイトル通り。
Lunascape の Gecko モードでは jQuery を追加してから色々やるタイプのブックマークレットは動かないっぽいです。
というより、createElement() でスクリプトを追加して、それを利用して何かするというタイプのものが動かないっぽい?
Evernote のブックマークレット版 Webクリッパー も動きません。
Twitter の公式シェアブックマークレットは一応動きますが、何か動きが変です。
"Lunascape Evernote Gecko" みたいなキーワードで検索して来られた方へ。
通常が Gecko モード利用なら、素直に Firefox 用アドオンを入れたほうがいいですよ。
確認のために簡単なテスト用ブックマークレットとページを用意してみました。
ブックマークレット
これをブックマークレットに登録
ブックマークレットは以下のようなものです。
javascript: (function () {
if (typeof jQuery == 'undefined') {
var s = document.createElement('script');
s.type = 'text/javascript';
s.src = 'http://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js';
document.getElementsByTagName('body')[0].appendChild(s);
function c() {
setTimeout(function () {
if (typeof jQuery == 'undefined') {
c()
} else {
b()
}
}, 500)
}
c()
} else {
b()
}
function b() {
jQuery('body').css('background-color', 'black');
jQuery('h1').show();
}
})()
ちゃんと動けば背景が黒になって、白い文字で「available!!!」と表示されます。
このコードの場合、Trident, webkit で動くことを確認しました。
Gecko モードのときだけ動きません。
これに限らず、こういうタイプのブックマークレットを Gecko モードで動かすには、Lunascape Gecko の拡張モードのアドレス欄にブックマークレットのコードを直接打ち込まなければいけません。
対処法が分からないので、どうしても使いたければ自分用に Greasemonkey とかでどうにかしたほうがいいかもしれません。
createElement() で追加するスクリプトですが Firebug で確認したところ、DOM にはちゃんと追加されています。
なので、Lunascape に標準で付いてくる Gecko 用ブックマークレットのように、追加したスクリプトのみで動作が完了するタイプのブックマークレットは動くと思います。
問題なのは上記コードのように「ライブラリなどを読み込んで、それを利用して何かする」というタイプのブックマークレットですね。
