2010-02-10 38 views
8

Ngoài việc cho phép bạn chèn các biến js vào thẻ script khi được viết như document.write('<scr' + 'ipt src= ưu/khuyết điểm của điều này so với thẻ <script src=> bình thường là gì?document.write ('<scr' + 'ipt src = vs <script src =

tôi chủ yếu hỏi liên quan đến tốc độ nhưng quan tâm đến toàn bộ câu chuyện với.

Cảm ơn Denis

+0

Tôi không thấy bất kỳ câu hỏi –

+0

Stackoverflow thực hiện điều này: 'document.write (' Skilldrick

+0

Câu hỏi này có hữu ích không? http://stackoverflow.com/questions/236073/why-split -e-script-tag-khi-viết-nó-với-tài liệu-ghi –

Trả lời

2

Tôi cho rằng điều này là để đạt được việc tải javascript không chặn.

Vì điều này, tôi khuyên bạn nên xem bài viết của Steve Souders về chủ đề này. http://www.stevesouders.com/blog/2009/04/27/loading-scripts-without-blocking/

Thư viện LABjs giải quyết vấn đề này một cách khá tiện lợi. http://labjs.com/

Cũng có vẻ như trình duyệt mới hơn đang bắt đầu tải mọi thứ song song theo mặc định http://www.stevesouders.com/blog/2010/02/07/browser-script-loading-roundup/

0

khác so với những? không có bất kỳ.

(Ngẫu nhiên, tách một thẻ tập lệnh trong một Chuỗi JS thành một cặp chuỗi được nối là vô nghĩa sưng lên)

9

Không cần thiết cho '<scr'+'ipt'. Cần có '<\/scr'+'ipt>'. Vì trình thông dịch HTML không cần phải hiểu Javascript nên nó sẽ xử lý mọi thứ giữa <script>...</script> dưới dạng văn bản và sẽ không quan tâm var a='</script>'; là một chuỗi chữ, nó sẽ coi đó là thẻ đóng cho <script> và xem phần còn lại của văn bản tập lệnh dưới dạng HTML đơn giản (sai).

chỉnh sửa: sửa chữa theo đề xuất của David

+4

Và điều đó cũng không đúng. Nó phải là: '" <\/script> "' vì trình phân tích cú pháp HTML (ít nhất là các trình phân tích HTML thực hiện chính xác, nghĩa là không phải hầu hết các trình duyệt web) sẽ xử lý ' Quentin

+3

'" <\/script> "' không '" <\/scr "+" ipt> "'. Sau này là vô nghĩa, không hiệu quả, khó đọc bloat. – Quentin

Các vấn đề liên quan