Chrome (v21) と Safari (v6) で正常に動作する JavaScript ブックマークレットがありますが、Firefox (v14) または IE (v9) で使用しようとすると、次のようなページが表示されます。
[オブジェクト HTMLScriptElement]
ブックマークレットは次のとおりです (最後のすべての PHP ステートメントは API キーを挿入します)。
javascript: (function(src, cb) {
var s = document.createElement('script');
s.charset = 'UTF-8';
document.body.insertBefore(s, document.body.firstChild);
s.src = src;
if (typeof cb === 'function') {
s.onload = cb;
s.onreadystatechange = function() {
(/loaded|complete/).test(s.readyState) && cb(s);
};
}
return s;
}('http://towatchlist.com/marks/bookmarklet2response?uid=<?php echo $userID; ?>'))
ブックマークレットをまったくロードしていないと思います。Firefox では、URL バーが上記のコードに変わります。IE では、それがどのページにあっても変更されません。
他の場所で提案されているように、ブックマークレットを自己実行関数式でラップしようとしましたが、結果
Uncaught SyntaxError: Unexpected token (
は Chrome コンソールになりました (他には何もありません)。これが私がそれを包んだ方法です:
javascript: (function() {
function(src, cb) {
var s = document.createElement('script');
s.charset = 'UTF-8';
document.body.insertBefore(s, document.body.firstChild);
s.src = src;
if (typeof cb === 'function') {
s.onload = cb;
s.onreadystatechange = function() {
(/loaded|complete/).test(s.readyState) && cb(s);
};
}
return s;
}('http://towatchlist.com/marks/bookmarklet2response?uid=<?php echo $userID; ?>')
}());
うまく巻けなかったのかな。いずれにしても、IE/Firefox で実際にブックマークを実行するには、何を変更する必要がありますか?