2011-11-24 57 views
3

與Firefox,Chrome,Safari和Opera一樣,所有工作都沒有問題。但是IE瀏覽器...這是另一個故事:)在IE瀏覽器中出現奇怪的jQuery錯誤:意外調用方法或財產訪問

這裏是我的全碼:http://pastebin.com/ZdzzFayJ

至少有一點好於IE,找我有以下錯誤:

SCRIPT65535: Unexpected call to method or property access. 
jquery.min.js, line 3 character 29586 

什麼是錯的?我無法找到一個bug :(


UPDATE

我清理我的代碼,JavaScript函數,現在被稱爲一個jQuery插件。我仍然得到一個錯誤,但現在我知道其中

在我的代碼,我把旁邊的代碼,其中IE提示錯誤信息評論IE ERROR

插件:。http://pastebin.com/6Dnd1qtd

jQuery:http://pastebin.com/wiHALjZx

我不知道爲什麼IE打破那裏..任何解決方案?


問候,馬里奧

+0

你真的需要孤立地測試這些功能,並確定哪一個給你帶來麻煩;那麼也許我們可以確定一條錯誤的路線。要求我們通過所有的代碼尋找清道夫並不是一個好主意。 – lsuarez

回答

2

我解決了這個問題通過以下方式:

  • 清理我的代碼(JSHint是非常有益的!)
  • 任何東西之前,我包括"//html5shiv.googlecode.com/svn/trunk/html5.js" IE瀏覽器承認,我使用HTML5標籤如節,標題,...
  • 在jQuery插件中,我用HTML內容填充元素。而不是使用$(defaultOpts.data_container).html("HTML CONTENT")我使用defaultOpts.data_container.html("HTML CONTENT")。因此,我將對象元素$(#ID)作爲參數發送給插件,而不是僅發送元素ID "#ID"

現在,一切工作正常。謝謝大家的支持和努力。

+0

我在調用jQuery addOption()時遇到類似錯誤,而html5shiv v3.4實際上是問題 - 升級它解決了問題。 – Webveloper

+0

我實際上發現,在腳本標記中添加type =「text/javascript」有幫助,但僅在IE8中 –

2

你似乎echo_data(data)後會丟失您GET_DATA功能的分號。

request.done(function(data) { 
    if (data) echo_data(data) _loading.hide(); 
    _ads_listing.unmask(); 
}); 
+2

只是想補充一點,Internet Explorer的調試器非常嚴格,您需要確保分號,尾隨逗號等被固定,否則IE會拋出錯誤。 –

+0

感謝您的回覆,但我仍然收到同樣的錯誤。這是我更改的代碼:http://pastebin.com/WqE3QyTg。感謝您的幫助.. – Puzo

+0

@lthibodeaux我更新了我的第一篇文章..請檢查出來。我仍然遇到錯誤。謝謝。 – Puzo

3

對我來說,問題是以下幾點:

我使用其中的所有環境中應用一個lib。

my_lib.js

jQuery.ajax({ 
     data : jQuery('form').serialize(), 
     url : '/'+action[1]+'/post_form', 
     type : 'POST', 
     dataType: 'json', 
     success: function(data){ 
      $('#my_name_id').find('option').remove().end().append(data.select_options); 

}); 

的Json返回:

select_options "<option></option>" 

一切都很好!但是,在一種形式下,#my_name_id不是選擇項,是隱藏字段,它是用戶的預選值和禁用屬性。

這就是爲什麼在IE8上的jquery檢索到我的錯誤。

的解決方案是:

my_lib.js

jQuery.ajax({ 
     data : jQuery('form').serialize(), 
     url : '/'+action[1]+'/post_form', 
     type : 'POST', 
     dataType: 'json', 
     success: function(data){ 
      if($('#my_name_id').is('select')) { 
      $('#my_name_id').find('option').remove().end().append(data.select_options); 
      } 
}); 

希望它可以幫助別人!

相關問題