Oba JSLint i JSHint wydawać ostrzeżenia, kiedy spotykają się z etykietą oświadczenie, którego identyfikator pasuje do następującego wyrażenia regularnego:Czy etykieta "javascript:" może powodować problemy?
/^(?:javascript|jscript|ecmascript|vbscript|mocha|livescript)\s*:/i
Na przykład, poniższy fragment kodu generuje „JavaScript URL” ostrzeżenie od JSLint i „etykieta„javascript "wygląda jak URL javaScript” ostrzeżenie od JSHint (obwoluta funkcja jest niepotrzebna, ale JSLint nie lubi oznakowanych wypowiedzi, które nie funkcjonują o zakresie i podnosi inny ostrzeżenie):
function example(x, y) {
javascript:
while (x) {
while (y) {
break javascript;
}
}
}
o ile mogę powiedz, że żadna przeglądarka nie dba o to, nawet gdy wydaje się, że jest diately po "javascript:" protokołu w bookmarklet. Na przykład, zawsze po wydają się działać (wystarczy wkleić w pasku adresu, jak każdy bookmarklet):
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; }
Czy identyfikator etykieta „javascript:” (lub dowolny inny ciąg znaków, który będzie pasował do tego regex) kiedykolwiek spowodowanego jakieś problemy (może jakaś starożytna przeglądarka?), które uzasadniałyby generowane ostrzeżenia? Dlaczego generowane są te ostrzeżenia?
Och, ironia, 'złamać javascript' ... +1 – user123444555621
@ Pumbaa80 - Haha, ja hadn” t tak to czytać! Dzięki. –