私のブックマークレットは、body
に挿入された「ランチャー」スクリプトの呼び出しで構成されています。それが実行されると、同様の方法でさらに多くのスクリプト(jQuery、実際のアプリケーション)とCSSが挿入されます。ブックマークレットを一度だけ実行する方法を教えてください。
ブックマークレット
javascript:(function(){
var l = document.createElement('script');
l.setAttribute('type','text/javascript');
l.setAttribute('src','launcher.js');
document.body.appendChild(l);
})();
Launcher.js
var s = document.createElement('script');
s.setAttribute('type','text/javascript');
s.setAttribute('src','my actual script');
document.body.appendChild(s);
// I repeat a block like this once per script/css.
問題はブックマークレットが二回クリックされた場合、すべてのスクリプトが再び挿入されることです。どのように私はこの動作を防ぐことができますか?
oops - 曖昧な構文を修正し、ifブロックを無意味ではなくむしろanon funcの場所に配置するように編集しました。 –
パーフェクト - 私の以前の試みは確かにこれらの行に沿っていましたが、私は全く知らなかったウィンドウ小道具の代わりに変数を使用していました。ありがとう! – vemv
@vemv関数の中で 'your'Var = 1234;という変数の前に' var'キーワードを指定しないで宣言された変数は、実際にはグローバル 'window'オブジェクトのプロパティになりますが、このメソッドははるかに明示的かつ慎重です。 –