Как JSLint, так и JSHint вызывают предупреждения, когда они сталкиваются с помеченной инструкцией, идентификатор которой соответствует следующему регулярному выражению:
/^(?:javascript|jscript|ecmascript|vbscript|mocha|livescript)\s*:/i
Например, следующий фрагмент генерирует предупреждение "JavaScript URL" из JSLint, а предупреждение Javascript "похоже на javascript url" от JSHint (оболочка функции не нужна, но JSLint не любит помеченные сообщения, которые не связаны с функциями и вызывает другое предупреждение):
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:" (или любая другая строка, соответствующая этому регулярному выражению) когда-либо вызвать какие-либо проблемы (возможно, какой-то древний браузер?), которые гарантировали бы генерируемые предупреждения? Почему эти предупреждения генерируются?