簡體   English   中英

JavaScript腳本動態腳本加載IE6問題

[英]JavaScript script dynamic script loading IE6 issue

我正在使用內部自定義庫來復制jsonp調用。 在你們要求我使用JQuery或其他庫之前,讓我告訴我由於某些限制我無法使用它。

以下是用於發出請求的代碼:

 BurrpJsonAjaxRequest.prototype.send = function() { this.script = document.createElement("script"); this.script.type = "text/javascript"; this.script.charset = "UTF-8"; this.script.src = this.URL; if (typeof(this.callBack) == "function") { this.script.callback = this.callBack; } var currRequest = this; //sleep(100); if (this.script.src.readyState) { //IE this.script.src.onreadystatechange = function() { if (this.script.src.readyState == "loaded" || this.script.src.readyState == "complete") { this.script.src.onreadystatechange = null; currRequest.hideLoading(); currRequest.callback(); } }; } else { //Others this.script.src.onload = function() { currRequest.hideLoading(); currRequest.callback(); }; } this.docHead.appendChild(this.script); }; 

這在第一次執行時有效。 在后續執行中,發出了請求,但未執行回調。

如果我使用如下的sleep方法(在代碼中有注釋),則回調也會在后續調用中執行。

 function sleep(milliseconds) { var start = new Date().getTime(); for (var i = 0; i milliseconds){ break; } } } 

睡眠如何影響回叫的執行? 盡管在Firefox中工作正常。

第一次,this.script.src.readyState為false (腳本仍在加載),並為onLoad事件創建了一個處理程序。 觸發onLoad時,將調用匿名onLoad函數-似乎與onReadyStateChange處理程序非常相似。 但是,onLoad僅觸發一次,因此您的函數僅調用一次。

睡眠會使執行enuf變慢,因此在執行if語句時,this.script.src.readyState為true

你怎么看?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM