0

這是在現代瀏覽器上工作,但它不是在IE < = 9.0上加載jQuery。動態jquery加載不工作在舊IE瀏覽器

下面是index.html文件中的代碼:

loadJQuery(function() { 
    alert('hello'); 
}); 

,然後在另一個文件(通過<script src>包括)我有:

if (typeof(loadJSInclude) == 'undefined') { 
function loadJSInclude(scriptPath, callback) 
{ 
    var scriptNode = document.createElement('SCRIPT'); 
    scriptNode.type = 'text/javascript'; 
    scriptNode.src = scriptPath; 

    var headNode = document.getElementsByTagName('HEAD'); 
    if (headNode[0] != null) 
     headNode[0].appendChild(scriptNode); 

    if (callback != null)  
    { 
    scriptNode.onreadystagechange = callback;    
    scriptNode.onload = callback; 
    } 
} 

function loadJQuery(task) { 
    if (typeof(jQuery) == "undefined") { 
     loadJSInclude('http://code.jquery.com/jquery-latest.min.js', function() { 
      $(document).ready(task) 
     }); 
    } else { 
     $(document).ready(task); 
    } 
} 
} 

爲什麼這是行不通的任何想法IE < = 9.0?我嘗試添加許多警報來loadJQuery函數,並且它們都顯示,我的猜測是我錯誤地將節點添加到舊IE的head元素。

+0

不要在'if'塊使用這種類型的函數聲明的,使用'window.loadJSInclude =函數...'。 – 2013-04-10 15:33:51

+0

怎麼樣?我真的不明白:( – luqita 2013-04-10 15:35:30

回答

0

一個簡單的解決方案是包括jQuery的是這樣的:

window.jQuery || document.write('<script src="/js/jquery/jquery.js">\x3C/script>'); 
0

您在$(document).ready(task)的末尾忘了;

注意,這可能不是實際的問題,因爲JS(技術上)不需要分號,但它可能會導致問題,特別是與動態內容的時候。並且,'undefined'"undefined"不需要引號。


(刪除,由於OP的誤解) 至於你實現,請參閱 this post


你試過設置scriptNode.async = true

另外,你見過this post?沒有被接受的答案,但是OP指定了一個在IE(但不是Chrome)中工作的解決方案。我建議您嘗試改編該解決方案,測試它是否仍然無法在Chrome中使用,如果沒有,我們可以繼續從此處進行調試。下面是從後IE8的解決方案:

<div id="test"> 
<p>This is a test.</p> 
</div> 

<script> 
if (typeof jQuery == 'undefined') { 
    s = document.createElement("script"); 
    s.src = "//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"; 
    if (s.addEventListener) { 
     s.addEventListener("load", runScript, false); 
    } else if (s.readyState) { 
     s.onreadystatechange = runScript; 
    } 

} else { 
    runScript(); 
} 

function runScript() { 
    document.getElementsByTagName('head')[0].appendChild(s); 
    $('#test').css('font-size', '50px'); 

} 
</script> 

正如我所說,我沒有寫這個,我沒有測試過,我自己。

+0

沒有回答問題/解決問題.... – luqita 2013-04-10 15:48:13

+0

我不認爲你是在理解這個問題,這篇文章也沒有幫助,因爲它使用jquery加載一個javascript,這裏的問題是首先加載jquery – luqita 2013-04-10 16:10:01

+0

正如我所說的,這些小錯誤可能不是實際問題的根源,但是在我們繼續之前需要修復它們,因爲我不能在那裏調試代碼在這種情況下,我的回答並不是一個很好的方式來獲得我的幫助,也不是一個準確的評估我的答案,因爲我的回答確實解決了代碼中的三個錯誤。 ,因爲沒有其他人似乎在幫助你,我參與SO的理由是爲了加強社區,我會繼續幫助你,因此,感謝你確認這些bug不是問題,我們現在可以向前邁進 – 2013-04-10 16:25:45

相關問題