どのポイントは無効とオペレーターでJavaScript?
-
21-08-2019 - |
質問
いくつかの人々を使用 void
オペレーターをコードです。私も見たこ href
属性: javascript:void(0)
るように見えませんが良い javascript:;
それでは、その正当性を利用 void
オペレーター?
解決
これは、ブックマークレット理由があります 多くの場合、(無効内のコードをラップ)または ない無名関数 ブラウザを停止するには何も返さ の結果を表示しようとしているから、 ブックマークレットを実行します。ために 例:
javascript:void(window.open("dom_spy.html"))
あなたは直接返すコードを使用している場合 何か(新しいウィンドウインスタンスで この場合は)、ブラウザが終わるだろう その表示:
javascript:window.open("dom_spy.html");
のFirefoxでは上記の意志表示:
[object Window]
他のヒント
の undefined
値はダイレクトアクセス可能なJavaScriptのでES1.3.
オペレーター void <expression>
したが含まれるアクセスを許可す。
ることもあり、特に作業する場合は、ウェブAPI(イベントハンドラー)をこえるかもしれないが、この表現は一貫して undefined
.
場合に undefined
物件に追加されたグローバルオブジェクトES1.3体 void
となった非自明である。
そのためのご質問です。
次の点を考慮します:
<a href="javascript:void(fish=document.getElementById('foo').value);void(document.getElementById('bar').value=fish);">With Void</a>
<a href="javascript:fish=document.getElementById('foo').value;document.getElementById('bar').value=fish;">Without Void</a>
<input type="text" id="foo" value="one fish" />
<input type="text" id="bar" value="no fish" />
最初のリンクは、テキストフィールドの値を交換します。 2番目のリンクは、テキスト「1匹の魚」で新しいページを開きます。あなたがjavascript: link
を使用する場合は、分式はnull
またはundefined
以外のものを返し、ブラウザは、リンクが何をすべきかのようにそれを解釈します。 void()
機能内のすべての式/たstatmentsをラップすることで、あなたが実行するコードのあなたの全体のスニペットを確保します。最近では、これはonclick
属性を使用して、ブックマークレットで使用するのは主である、または別のJavascriptのブロック/ファイルにイベントハンドラを設定すると、「標準」です。
javascript:
対javascript:void()
については、最初の文はあいまいです。あなたは「ねえ、私はいくつかのJavaScriptを実行したい」と言っているが、その後、あなたは、任意のコードを提供していません。これは、ブラウザがここに何をすべきかは必ずしも明確ではありません。第二の文を使用すると、「ねえ、いくつかのJavaScriptを実行します」と言っていて、あなたのコードは、最終的には、ブラウザの手段は、「何もしない」知っている、undefinedを返します。
、私はjavascript:
またはjavascript:void();
のいずれかを使用してマークアップを気にほとんどの人々との好意から落ちていることも指摘します。行うには良い事はあなたのonclickハンドラがfalseを返す必要があり、およびリンクJavaScriptがオフになっている、またはそのようなNoScriptのようjavascriptのブロッカーを使用している人々のために理にかなっているページ/リソースに向けるます。