Tại sao các trình duyệt không báo lỗi khi bất kỳ từ nào khác được sử dụng thay cho 'javascript' trong giá trị của onclick?


100

Tôi thừa kế một trang web và chỉ bắt gặp sự tò mò này:

<a href="/delete"  onClick="jamoscript:return confirm('Do you really want to do that?');">Delete all</a>

Tôi có thể hiển thị trang chứa nó và nhấp vào liên kết để nhận hộp thoại xác nhận giống hệt như khi tôi thay đổi " jamoscript" thành " javascript". Không có chẩn đoán nào được hiển thị trong bảng điều khiển Firebug, khi trang được tải hoặc khi liên kết được nhấp. Cái gì thế này? Googling cho jamoscript không tạo ra bất kỳ điều gì thú vị.

Ai có thể giải thích hành vi này?

Câu trả lời:


144

Giá trị chuỗi của thuộc tính "onclick" được coi là mã JavaScript đơn giản. JavaScript bao gồm các điều khoản cho các câu lệnh được gắn nhãn , vì vậy mã đó là một returncâu lệnh có nhãn "jamoscript". Nói cách khác, điều này:

jamoscript: return confirm("Do you really want to hurt me?");

là JavaScript hoàn toàn hợp pháp. Nhãn không được sử dụng nhiều nên chúng không quen thuộc.

Ngữ cảnh duy nhất mà tiền tố "javascript:" quan trọng là khi URL được mong đợi, như trường hợp với thuộc tính "href" của <a>thẻ.


53
Câu hỏi này khiến tôi thực sự ước rằng ngôn ngữ đã được gọi là "JamoScript".
Pointy

5
Điều này nhắc nhở tôi về vấn đề nổi tiếng về những gì sau đây không: function foo(a) { x: 2 }.

80
Tôi đã tạo một tài khoản ở đây, chỉ để nói với bạn rằng dòng mã này (? -Tôi không phải là lập trình viên) chắc chắn được viết bởi một người Hy Lạp, hoặc ít nhất là "jamoscirpt" được đề xuất bởi một người Hy Lạp. "Jamo" là cách người ta cố gắng sử dụng âm thanh của các chữ cái tiếng Anh để tạo ra âm thanh mà từ "f --- ing" có trong tiếng Hy Lạp. Vì vậy, nếu bạn cố gắng đọc to "jamoscript", một người Hy Lạp biết từ "script" sẽ hiểu "f --- ing script". Hiệu quả dự kiến ​​sẽ chắc chắn hơn nếu thay vì "j", chữ "g" được sử dụng, nhưng tôi đoán có ý định chơi với "j-ava".
Alecos Papadopoulos

6
@AlecosPapadopoulos wow thật tuyệt vời. Nếu bất cứ điều gì, nó làm cho tôi muốn thậm chí hơn rằng ngôn ngữ đã thực sự gọi là "JamoScript" :)
chóp

6
@asawyer Tôi đánh giá cao thông tin (+1), nhưng xin đừng cám dỗ tôi để tỏ nhu mì của tôi trên mạng tính cách và trở lại Hoàn nguyên về bản thật của tôi ...
Alecos Papadopoulos
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.