Lunascape GeckoモードではcreateElement()でJavaScriptを追加してアレコレするタイプのブックマークレットは動かないことがある
公開:
更新:
タイトル通り。
LunascapeのGeckoモードではjQueryを追加してから色々やるタイプのブックマークレットは動かないっぽいです。
というより、createElement()
でスクリプトを追加して、それを利用して何かするというタイプのものが動かないっぽい?
Evernoteのブックマークレット版Webクリッパーも動きません。
Twitterの公式シェアブックマークレットは一応動きますが、何か動きが変です。
2011年1月26日 追記:
"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とかでどうにかしたほうがいいかもしれません。
2011年1月11日 追記:createElement()
で追加するスクリプトですがFirebugで確認したところ、DOMにはちゃんと追加されています。
なので、Lunascapeに標準で付いてくるGecko用ブックマークレットのように、追加したスクリプトのみで動作が完了するタイプのブックマークレットは動くと思います。
問題なのは上記コードのように「ライブラリなどを読み込んで、それを利用して何かする」というタイプのブックマークレットですね。