JSLint と JSHint はどちらも、識別子が次の正規表現と一致するラベル付きステートメントに遭遇すると、警告を発行します。
/^(?:javascript|jscript|ecmascript|vbscript|mocha|livescript)\s*:/i
たとえば、次のスニペットは、JSLint から「JavaScript URL」警告を生成し、JSHint から「ラベル 'javascript' は javascript url のように見えます」警告を生成します (関数ラッパーは不要ですが、JSLint は関数ではないラベル付きステートメントを好みません)。 -scoped であり、別の警告が発生します):
function example(x, y) {
javascript:
while (x) {
while (y) {
break javascript;
}
}
}
私が知る限り、ブックマークレットの「javascript:」プロトコルの直後に表示される場合でも、ブラウザはそれを気にしません。たとえば、次は常に機能するようです (ブックマークレットのようにアドレス バーに貼り付けるだけです)。
javascript:(function () { javascript:for(var i = 0; i < 2; i++) { alert(i); break javascript; } }());
javascript:javascript:for(var i = 0; i < 2; i++) { alert(i); break javascript; }
ラベル識別子「javascript:」(またはその正規表現に一致するその他の文字列) が、生成された警告を正当化するような問題 (おそらく古いブラウザー) を引き起こした可能性はありますか? これらの警告が生成されるのはなぜですか?