2011-11-24 72 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); 
      } 
}); 

希望它可以帮助别人!

相关问题