0

私はブックマークレットを管理しています。ブックマークレットをクリックすると、任意の Web サイトでスマイリーが作成されます。
Javascriptは完全に機能していますが、同じスクリプトをブックマークレットから完全に機能させることはできません(迷惑な出力)。

javascript jsfiddle
ブックマークレットjsfiddle

今私がしていることは、次のようなブックマークレットを手配することです

javascript:(function() {
// All javascript code

}
)();

スマイリーをドラッグ アンド ドロップできるように、ブックマークレット スクリプトを管理する方法を提案してください。

4

1 に答える 1

0

変化する

document.onmouseup=new Function("isdrag=false");

document.onmouseup = function() {isdrag=false};

理由: すべてのコードを外側の関数ブロックにラップしてブックマークレットを作成すると、「var isdrag」のスコープがウィンドウ レベルから変更され、その外側の関数に対してローカルになります。一方new Function("isdrag=false")、ウィンドウレベルで新しい関数を作成し、現在のスコープをエスケープします。その新しく作成された関数の「isdrag」は、アクセスしていると思われる「var isdrag」にアクセスできません。解決策は、「new Function(...)」を使用せずに、「var isdrag」と同じスコープ内に新しい関数を作成することです。

于 2013-02-21T05:35:59.763 に答える