2013-09-02 6 views
83

前に、私は本当に見たことがないという奇妙な何かにつまずい:上記の行が正しいと思えるとjavascript:部分が存在しなかったかのように(少なくともFirefoxで)喜ん評価「javascript:」(URLではなく)のコードのポイントは何ですか?

javascript:a=a+10; 

古いjavascript:void(...)の目的を理解していますが、DHTMLの暗黒時代に使用されたスタイル<a href=".."/>は、プレフィックスのJavaScriptコードでの便利な使い方を理解できません。

特別な意味がありますか?

+8

私は誰もが話すことができませんが、私は平凡なJSコードでこれを見たことはありません**。あなたは例を挙げることができますか? (*それはうまくいくかもしれませんが、これまでどんな影響もあってはいけないので、これを見た場所を知りたいです*) – h2ooooooo

+0

どこを見ましたか? – reporter

+1

どこに書いていますか?アンカータグか、それともどこですか? – pixelbyaj

答えて

97

javascript:」は、labelです。ループを識別するために使用されるはずなので、 "break javascript;"を使用してそれを中断することができますが、ここで悪用されています。これは無害ですが、ループではないステートメントにラベルを追加するのは良い考えではありません。

+0

公式(IANAの時点)では、リンクプレフィックスは[URIスキーム]と呼ばれています(http://en.wikipedia.org/wiki/URI_scheme#Unofficial_but_common_URI_schemes)。正式にIANAに登録されていないのは事実ですが、この種の命名規則は引き続き使用する必要があります。 –

+17

質問にあるように、それはURIではなくプレーンコードであることを除いて。クエンティンは以下のように示唆しているように、彼らが何をしているのか理解せずに誰かがコピー&ペーストすることによってほぼ確実に引き起こされています。 – Jules

+0

はい、href、onclickなどで使用されていても、[URL](http://en.wikipedia.org/wiki/Uniform_resource_locator)として使用されています。はい、これに気がつきましたが、この種の質問に慣れましたここに。 –

52

文法上有効ですが(それはlabelですが)役に立たないです。人々がそれを理解せずにコードをコピー/ペーストすることによって引き起こされたのはcargo cultingです。

+8

+1貨物育成のリンク:)。人々をコピー/貼り付けることは、社内のWebアプリケーション設計を担当する社員に広く普及しているようです。 – sitifensys

+10

プログラミングでのカーゴカルトに関するこのwiki記事は、その場でより多くなるでしょうか? [1] http://en.wikipedia.org/wiki/Cargo_cult_programming – AnyOneElse

-2

私はラベルとしての無駄について同意しますが、場合によってはそれはまだ有用です。たとえば、アドレスバーから短いスニペットを実行するか、ブックマークレットを作成する必要があります。しかし、この場合、javascript:はもっと擬似プロトコルスキームに似ています。

+7

これは実際にはまったく異なっています。 URLの先頭にある 'javascript:'は、ブラウザが残りのURLをJavaScriptとして実行するようにします。 JavaScriptコードの*行頭の 'javascript:'は '' javascript' "という名前のラベルで、' foobar: 'と同様に' 'foobar'"というラベルです。それらは完全に無関係であり、異なる状況で発生しますが、似たように見えます。 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/label – Peeja

12

JavaScriptはHTML Application(HTA)のウェブページからも使用できます。 HTAでは、VBScriptとJavaScriptの組み合わせを使用することができます。アプリケーションでスクリプトを使用すると、次のように、スクリプト言語は自動的にVBScriptに設定されます。

<SCRIPT LANGUAGE='VBScript'> MsgBox 'Hi!'</SCRIPT> 

したがってJavaScript onclickイベントを持つ要素は、次のようにエラーになります。このコーナーケースで、私は承知していますが、それ:

<a id="myLink" href="#" onclick="MyFunction();return false;">Click me!</a> 

あなたは

<a id="myLink" href="#" onclick='vbscript:msgbox "VBScript Executed!"'>Click me for VBScript!</a> 

ノートでのVBScript

<a id="myLink" href="#" onclick="javascript:alert('Javascript Executed!');return false;">Click me for Javascript!</a> 

するかでJavaScriptを明示的に設定した言語によってこの問題を解決することができます混在した言語のHTAを作成しているときに遭遇したjavascript:ラベルの実際の使用法です(この文脈ではラベルはまだそれを呼び出していますか?)。

+2

トピックは少し離れていますが、元の質問はプレーンなJavaScriptコードでラベルを使用することですが、どのようにweired Internet Explorerができるかを参照してください;)。 – sitifensys

関連する問題