【问题标题】:javascript return in IE8 - Object doesn't support this property or methodIE8 中的 javascript 返回 - 对象不支持此属性或方法
【发布时间】:2012-11-07 18:38:08
【问题描述】:
var result = Object.prototype.toString.call(nodes);
return (
    typeof nodes === 'object'
    &&
    /^\[object (HTMLCollection|NodeList|Object)\]$/.test(result)
    &&
    nodes.hasOwnProperty('length')
    &&
    (nodes.length == 0 || (typeof nodes[0] === "object" && nodes[0].nodeType > 0))
)

这在 Chrome 中可以正常工作,但在 IE8(也可能是 7)中会引发错误。 return 行发生错误。

这是我从这里某处偷来的(我会继续寻找链接)。它应该确定给定对象 (nodes) 是否是节点列表。这个错误有很多结果,但我找不到这个案例。有什么东西会攻击任何人吗?

谢谢!

【问题讨论】:

  • 这里是我得到测试函数的原文:stackoverflow.com/questions/7238177/…
  • 哪个对象不支持哪个属性或方法?
  • 此链接可能包含解决您的问题的方法。虽然与检查节点列表无关,但您对 hasOwnProperty 的使用在我的记忆中触发了一些事情。在 IE8 中,它仅适用于非 Host 对象,但在 cmets 中有一个解决方法:stackoverflow.com/questions/8157700/…
  • @Musa 很好,更新的问题。
  • @Musa:IE 实际上并没有告诉你。就是这么说的。

标签: javascript internet-explorer return


【解决方案1】:

感谢@STLRick:

Object.prototype.hasOwnProperty.call(nodes, 'length')

似乎已经解决了!至少,它不再抛出错误了。不是 100% 确定它是否会影响节点检查,但它在我正在运行的几个测试用例中工作!

【讨论】:

  • 猜猜我应该把它作为答案而不是评论发布;)很高兴它有帮助!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多