2011-09-01 34 views
0

對於我來說,這看起來非常簡單,但儘管使用了搜索字符串,但我找不到答案。我正在使用jquery 1.5.1並嘗試使用$(document).ready()函數來綁定頁面加載時的幾個點擊事件。最後,我縮小的問題是這個小:jquery(document).ready()無法在IE 7+中運行

$(document).ready(function(){ 
    alert('hello world'); 
}); 

在IE 6,7和8我從來沒有看到的Hello World警報,當我加載頁面。 IE 9的工作原理如FF,Chrome,Safari等。

這種解決方案的工作原理是在500ms的JS超時中包圍警報。這似乎只有工作,但絕對不夠一致。

我能想到的唯一可能是因爲這個腳本正好加載在頁面HTML的body標籤內,所以這可能會搞亂ready()函數。如果是這樣的話,我不知道解決方案會是什麼。

UPDATE

OK,測試一個較小的頁面後,我能得到的文件準備在IE工作(沒有警告,雖然,我想這是一個完全不同的問題)。

有沒有關於IE瀏覽器的怪癖,你可以在頁面中加載JavaScript文件?

+1

讓我們看看更多的頁面 – n8wrl

+0

它是絕對使用jQuery 1.5.1嗎?有一個問題與IE瀏覽器<8的jQuery 1.5,我可以進一步詳細瞭解,如果它確實是1.5你使用 –

+0

肯定是100%1.5.1 – scott

回答

0

因此,在弄亂了這個之後,我得出了我在虛擬機中使用的IE瀏覽器存在錯誤的結論。無論我對javascript做出何種更改,按鈕和ajax調用的失敗似乎都是隨機的和間歇的。我認爲準備好的文檔一直在工作,瀏覽器以不同的方式失敗。它現在似乎在工作。

0

你有沒有其他的JavaScript文件可能與jQuery $衝突?

行爲在頁面加載時,

if (typeof jQuery == 'undefined') { 
     var script = document.createElement('script'); 
     script.type = 'text/javascript'; 
     script.src = 'js/jquery/1.4.4/jquery.min.js'; 
     document.getElementsByTagName('head')[0].appendChild(script); 
     setTimeout(checkjQuery, 0); 
    } 
    function checkjQuery() { 
     if (typeof jQuery == 'undefined') { 
      setTimeout(checkjQuery, 0); 
     } else { 
      jQuery.noConflict(); 
     } 
    }; 
+0

我使用原型並排,但我有'var jq = jQuery。noConflict()'工作。並沒有問題。 – scott

+1

@scott:除了你的腳本定期完全不工作,你的意思是? –

0

沒有理由使用$(document).ready頁面身體內部測試。當您的SCRIPT標籤位於頁面的HEAD中時使用它,或者移除它,並且在所有必要的主體元素都關閉之前不要添加SCRIPT標籤。

+0

即使我將它移動到身體標記之外,它仍然不起作用。這是MVC應用程序的一部分,因此我們有站點頭文件和站點腳本文件,這些文件可以在任何地方共享。在任何地方加載這個腳本都沒有意義。 – scott

1

你有什麼type=""屬性?當涉及到該屬性時,IE非常嚴格。如果您指定該屬性,則必須包含"text/javascript",否則IE將忽略它。

0

我有這個問題,IE7,看來我是用

<script type='application/javascript' language='javascript'> 
$(document).ready(function() { ... }) 
</script> 

第一個腳本標籤更改爲

<script type='text/javascript' language='javascript'> 

似乎使其工作。希望這可以幫助。

相關問題