Javascript IE错误:意外调用方法或属性访问

我有以下代码,它在除了IE之外的所有东西中工作(像往常一样)。 它让我在Jquery中意外调用方法或属性访问,我不知道如何调试它。 我一直在使用IE开发人员工具栏,这对于这个错误没用,只给了我一行12号(在jquery脚本里面)。

非常感谢任何帮助:

 $(document).ready(function () { $.history.init(pageload); $('a[href=' + window.location.hash + ']').addClass('selected'); $('a[rel=ajax]').click(function () { var hash = this.href; hash = hash.replace(/^.*#/, ''); $.history.load(hash); $('a[rel=ajax]').removeClass('selected'); $(this).addClass('selected'); $('.loading').show(); getPage(); return false; }); }); function pageload(hash) { if (hash) getPage(); } function getPage() { hash = document.location.hash; hash = hash.replace(/^.*#/, ''); var data = 'page=' + encodeURIComponent(hash); $.ajax({ url: "index.php", type: "POST", data: data, cache: false, success: function (html) { $('.loading').hide(); $('tbody').html(html); } }); }  

这是历史插件: http : //plugins.jquery.com/project/history

这是我一直关注的演示: http : //plugins.jquery.com/project/history

仍然将window.location改回document.location似乎没有什么区别

我迷失在这一个。 当我更改标签时,我正在调用它确实发布,所以它正在工作,但在IE中,设计全部被破坏,我点击的下一个链接不发布。 真奇怪!! 在firefox,opera等中运行良好。

我有点惊讶IE抱怨它,但这是一件好事:你在getPage缺少一个getPage (例如,在第一次使用前放置var )。

在其他的情况下,它可能会创建一个隐式全局( window对象的属性称为hash ),这当然是一件坏事 (tm),但据我所知它根据规范是正确的(相关部分是8.7 [“参考类型“]和10.1.4 [”范围链和标识符解析“])。

尽管IE仍在抱怨,但仍然感到惊讶。 它必须与jQuery调用单击处理程序的范围有关。

如果在IE中使用HTML5元素时出现此错误,请确保使用html5shim告诉IE这些是真实元素。

它将是:

 $('tbody').html(html); 

当您尝试将某些内容放入某些节点时,IE会抛出错误。 例如

 $('').append('') 

要解决此问题,请将html添加到其他元素。 例如,您可以尝试:

 $('table').html('' + html + ''); 

我在jQuery API中找不到历史方法,所以我认为它是:

  • 第三方插件。
  • 间接调用好的旧window.history对象。
  • 您创建的自定义对象。

我的猜测是IE(众所周知通过使一切全局污染全球范围)认为对历史的任何引用实际上意味着window.history并且它变得混乱。 如果它是自定义对象,请尝试将其重命名为myHistory或其他任何内容。

我认为克劳德先生正在做些什么。 据我所知,从jQuery源代码中,如果你返回的HTML片段不包含任何标签,并且没有其他一些不太可能的特性,那么jQuery可能会尝试填充它使用“innerHTML”属性进入

元素。 IE不喜欢这样。

您可能需要做的是将整个

包装在一个虚拟

,然后从HTML片段重建整个事物。

我在使用HTML5元素的Web应用程序中遇到此问题。 当我将Modernizr脚本包含在页面中时,问题就解决了。

我有同样的问题。 最初有一个选择列表附加到它。 在此过程中,选择被更改为输入字段。 尝试将选项标记附加到输入字段似乎使IE不满意。

我现在遇到了同样的问题。 在我看来,它发生在不可见的元素上。 validation您的元素在调用.html()时是否可见。

你在设置任何输入字段吗?

我有同样的问题,循环遍历值数组,但我已经将文本框更改为输入。 Chrome只是忽略它,但IE 8爆炸了。

$("#someID").html("someValue") =繁荣! 在IE 8上,如果someID是输入

已经有val调用,但需要删除html。

$("#someID").val("someValue") =好