5 に答える
要素のデフォルトの動作の代わりに実行する必要があるjavascriptスニペットを渡す必要がある場合は、この構文を使用します。javascript: ;
例えば
<a href="javascript:alert('');">Test</a> <!-- Runs on the click of the link -->
同様に、などの他のイベントでもこれらを組み合わせることができonclick
ますが、スニペットを直接実行できるため、onchange
これは実際には必要ありません。
これの使用法は、私が何年にもわたって見たものです:
<a href="javascript:void(0);">Test</a>
<form action="javascript:void(0);">..</form>
javascript :; hrefで、「onclick」プロパティに何かを入れるのと同じことをします。
したがって、
<a href="javascript:do_something();">Link</a>
と同じです
<a href="#" onclick="do_something();">Link</a>
どちらを使用するのが良いかはわかりませんが、最近のほとんどのブラウザのアドレスバーにこれらの「リンク」を入力すると実行されます。
アドレスバーにコピーして貼り付けます(または、Chromeはこれを禁止しているようです)。
javascript:alert("test");
また、これらのアドレスのリンクをブックマークに保存して、ブックマークをクリックした任意のページでそのスクリプトを実行できるようにすることもできます。
それだけでは何もしませんが、通常はjavascript:をいくつかの JavaScript コードの前に置き、ブラウザーが href 属性を URL として扱う代わりにコードを実行する必要があることを示します。それでおしまい。
これは、クリックしても何も起こらない参照として意図されている可能性があり、実際に何かを実行するようにonclickなどを設定する必要がある場合があります。
upd:スクリプトをhrefに入れることは、onclickに入れることと同じであると言う人もいますが、右クリックで起こることなど、いくつかの違いがあります(また、一部のスクリプトは、新しいタブなどで絶対に開かないでください)。それでも、この慣習についての私の意見は、リンクの上にマウスを置いたときにステータスバーに情報がないという理由だけでなく、やや醜いということです。
あなたは誰かがその「javascript:;」をコピーしていると想像することができます。URLボックスに入力し、Enterキーを押します。「javascript:」で始まるため、ブラウザは現在のページでjavascriptとして続くものを実行することを認識します。続くのは「;」だけなので、実際には何も起こりません。これは、onClick属性が「;」に設定されているボタンをクリックするのと同じです。
例えば:
<a href="javascript:alert('howdy!')">Click me!</a>
と同じ効果があります
<button onClick="alert('howdy!')">Click me!</button>
あるいは
<a href="#" onClick="alert('howdy!')">Click me!</a>
これはリンクであるため、ほとんどのブラウザはステータスバーにそのアドレス(この場合は "javascript:alert('howdy!')")を表示し、それは望ましくない場合があることに注意してください(特に醜いことがわかります)。 )。