Tôi biết tải động/css động bằng cách thêm các thẻ <style>
hoặc <link>
vào đầu hoặc phần nội dung của trang, nhưng sau đó nó sẽ được thực thi bởi trình duyệt khi tải xuống. Tôi đã suy nghĩ về những cách khác để tải xuống nhưng không thực thi mã javascript/css. Đầu tiên điều gì sẽ đến trong tâm trí tôi là XMLHttpRequest:Các cách tải JavaScript hoặc CSS mà không cần thực thi chúng là gì?
//simple execution received script
var executeScript = function(code){
eval(code);
};
//create XMLHttpRequest in cross-browser manner
var xhr = createXMLHTTPObject();
//check whether file is loaded
var checkStatus = function(){
if(xhr.readyState == 4){
if(xhr.status >= 200 && xhr.status < 300 || xhr == 304){
executeScript(xhr.responseText);
}
else {//error
}
}
};
//do request
xhr.open('get','http://podlipensky.com/examples/dynamicscript/hey.js', true);
xhr.onreadystatechange = checkStatus;
xhr.send(null);
Nhưng trong trường hợp này, chúng tôi đang giới hạn với kịch bản từ cùng một tên miền vì Policy xứ Same (mặc dù chúng ta có thể cố gắng workaround nó với CORS)
Một cách tiếp cận khác, tôi đã nghĩ đến là thêm động iframe
vào trang và sau đó thêm script
thẻ vào iframe
, vì vậy tập lệnh sẽ được thực thi sau khi tải xuống, nhưng nó sẽ xảy ra trong ngữ cảnh của một trang khác - iframe
.
Có cách nào khác để tải xuống và không thực thi tập lệnh không?
UPDATE:
Một trong những lý do tại sao nó sẽ hữu ích để tải về, nhưng không thực hiện javascript/css là pre-load thư viện của bên thứ ba, nhưng sử dụng chúng chỉ theo yêu cầu.
Chỉ vì css/javascript được tải xuống không có nghĩa là nó được thực thi ngay lập tức. Đó là những gì các phương pháp/lớp học được cho. Ngoài ra, nếu bạn định sử dụng ajax, hãy sử dụng 'jQuery' – Darcy
Có đúng là chỉ 23% trong số 83 câu hỏi khác mà bạn đã hỏi đã nhận được câu trả lời chấp nhận được không? –
Đây là một cách độc đáo, nhưng chắc chắn không thực tế cho việc sử dụng bình thường http://blog.nihilogic.dk/2008/05/compression-using-canvas-and-png.html – qw3n