0

嗨,我在 IE 中遇到了这个错误。它适用于所有其他浏览器。

这是错误显示的行:

if (parseFloat(totalnumm.replace(/[^0-9-.]/g,'')) > compare_value_neww    &&  values[x].indexOf("Custom") > -1 ).

我用谷歌搜索并找到了一个解决方案:

<meta http-equiv="X-UA-Compatible" content="IE=8;FF=3;OtherUA=4" />

但这对我不起作用。

4

1 回答 1

7

我本来想问你在哪个版本的 IE 中测试这个,但是因为你已经content="IE=8在你的元标签中指定了,所以这无关紧要。

简短的回答是.indexOfIE8 或更早版本不支持 for 数组。(这包括兼容模式下的更高版本的 IE,因此您的元标记将意味着它在任何 IE 版本中都不起作用)

解决方案:

  1. 使用像 jQuery(或类似)这样的库,它提供了.inArray()一种您可以使用的方法。

    然后,您需要将代码从 using 更改var.indexOf(x)$.inArray(var,x)

    如果您已经在使用 jQuery(或其他具有此功能的库),请选择此解决方案。

  2. 使用像这样的 polyfill 库,它将标准.indexOf方法添加到 Array 原型中。

    这应该允许您保持现有代码不变;只包括图书馆。

    如果您乐于使用某个库但尚未安装可以提供帮助的库,请使用此解决方案。

  3. 编写自己的函数,使用for()循环完成相同的工作。

    这完全改变了您在数组中查找内容的方式,但确实意味着您不需要使用任何额外的库。

    如果您不想(或出于某种原因不能)使用第三方库,请使用此解决方案。

  4. 删除您的 IE8 元标记(无论如何这很糟糕,所以这是一个好主意),并且只支持您的网站为具有 IE9 或更高版本的用户。

    如果您愿意停止支持较旧的 IE 版本,请使用此解决方案。

    事实上,无论如何,这样做是个好主意。没有充分的理由使用元标记来强制 IE 进入兼容模式。最好将其设置为content="IE=edge". 这将完全消除较新 IE 版本的问题。如果您确实需要支持 IE8 或更早版本,那么此解决方案将无法解决问题,您还需要使用上述其他解决方案之一,但我仍然建议您这样做,因为就目前情况而言,您是无缘无故故意从较新的 IE 版本中删除功能。

于 2013-05-28T08:58:12.203 回答