Cả hai cảnh báo vấn đề JSLint và JSHint khi họ gặp phải một tuyên bố nhãn có dạng phù hợp với biểu thức chính quy sau:Nhãn có thể "javascript:" gây ra bất kỳ sự cố nào không?
/^(?:javascript|jscript|ecmascript|vbscript|mocha|livescript)\s*:/i
Ví dụ, đoạn mã sau tạo ra một cảnh báo "JavaScript URL" từ JSLint và một "Label 'javascript 'trông giống như một url javascript" cảnh báo từ JSHint (chức năng wrapper là không cần thiết, nhưng JSLint không thích báo cáo dán nhãn mà không phải là chức năng đặt phạm vi và đặt ra một cảnh báo khác nhau):
function example(x, y) {
javascript:
while (x) {
while (y) {
break javascript;
}
}
}
theo như tôi có thể cho biết, không có trình duyệt nào quan tâm đến nó, ngay cả khi nó xuất hiện imme ngay sau giao thức "javascript:" trong bookmarklet. Ví dụ, sau đây luôn luôn có vẻ làm việc (chỉ cần dán vào thanh địa chỉ giống như bất kỳ 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; }
thể nhận diện nhãn "javascript:" (hoặc bất kỳ chuỗi khác mà có thể phù hợp với regex đó) bao giờ đã gây ra bất kỳ vấn đề (một số trình duyệt cổ đại có lẽ?) mà sẽ đảm bảo các cảnh báo được tạo ra? Tại sao các cảnh báo này được tạo ra?
Oh, sự trớ trêu, 'phá vỡ javascript' ... 1 – user123444555621
@ Pumbaa80 - Haha, tôi hadn' Tôi đọc nó như thế! Cảm ơn. –