2011-08-22 36 views
10

Ai đó có thể giải thích cách bắt đầu và kết thúc của tập lệnh html5shim hoạt động không?javascript: what/* @ @ */có nghĩa là gì?

kịch bản bắt đầu với /*@ và kết thúc với @*/ như thế này:

/*@cc_on(function(a,b){function ........ (this,document);@*/ 

các /*@ @*/ đang làm gì?

Tôi mong đợi/* */chuỗi để nhận xét tất cả các dòng ở giữa chúng, nhưng kể từ khi kịch bản thực hiện, đó không thể là trường hợp ở đây? Tôi bối rối.

tìm thấy tại địa chỉ:

http://html5shim.googlecode.com/svn/trunk/html5.js

Trả lời

14

JScript của IE hỗ trợ 'biên soạn có điều kiện', một thủ thuật giấu trình duyệt đặc biệt thông tin cụ thể trong nhận xét. Ý tưởng là /*@[email protected]*/ là một chuỗi ký tự không bình thường đến mức an toàn để sử dụng lại nó để giới thiệu tính năng cấp cú pháp mới này.

html5shiv sử dụng nó để tạo một đoạn mã thậm chí sẽ không chạy trên hầu hết các trình duyệt (giống như bạn đã làm, sẽ giải thích toàn bộ nội dung như một lời khen), nhưng có ý nghĩa đặc biệt đối với IE.

MS doc here. Không có công cụ JS nào khác hỗ trợ điều này. Thông thường, bạn có thể ưu tiên mã lệnh tìm kiếm hành vi rõ ràng hơn, nhưng nếu bạn thực sự cần phát hiện một tính năng của IE không thể tự đánh hơi nếu không, nó có thể hữu ích.

+1

"Không có động cơ JS nào khác hỗ trợ điều này" ... không phải là vấn đề? ;) – Artfunkel

+1

@Artfunkel: tốt, các trình duyệt khác đã chọn các tiện ích mở rộng khác của trình duyệt để không nằm ngoài phạm vi khả năng người khác có thể triển khai một số tính năng của CC. Có lẽ không phải là một ý kiến ​​hay vì bây giờ mọi người đều sử dụng nó để phát hiện IE, mặc dù ... – bobince

7

Đây là một trình duyệt IE-ism cho "biên soạn có điều kiện": http://www.javascriptkit.com/javatutors/conditionalcompile.shtml

+0

Nhưng ví dụ của anh ta không sử dụng bất kỳ điều kiện meta nào trong tập lệnh đó, vì vậy _why_ sẽ được sử dụng ở đây ở đâu? –

+0

câu hỏi hay ...? – mikkelbreum

+1

vì sử dụng @cc đảm bảo nó sẽ chỉ được thực hiện trên IE. –