解决IE7-JS导致的JavaScript Invalid argument错误

!本文可能 超过1年没有更新,今后内容也许不会被维护或者支持,部分内容可能具有时效性,涉及技术细节或者软件使用方面,本人不保证相应的兼容和可操作性。

本来想让旧版本的IE6、IE7以及IE8也能应用一些新特性的,于是尝试使用了ie7-js这款兼容性脚本。关于ie7-js这个我在前面的文章中介绍过,主要是为了让低版本的IE看起来更符合标准,其修复了一些低版本IE的不符合标准的问题。

<!--[if lt IE 9]>
<script src="http://ie7-js.googlecode.com/svn/version/2.1(beta4)/IE9.js">
</script>
< ![endif]-->

通过上面的代码引入后,效果确实是有了,但是出现了JS错误,特别是在IE6下JavaScript会报类似下面错误:

Line: 2080
Char: 11
Error: Invalid argument
Code: 0

刚开始怀疑是脚本冲突所导致,排除其他脚本后,错误依旧,于是搜索谷歌,在ie7-js官方issues站找到了原因,首先glen…@gmail.com给出了出错的代码片段

function (g, f) {
    if (g.parentElement) {
        var d = f.match(dd);
        for (var c = 0; c < d.length; c++) {
            var a = d[c].replace(de, "");
            if (g.currentStyle["ie7-" + a] === "inherit") {
                a = a.replace(df, dg);
 
                alert(a); //alerts 'font'
 
                g.runtimeStyle[a] = g.parentElement.currentStyle[a]
            }
        }
    }
}

看样子是和CSS的Font有关系,进一步通过《Issue 307:”font: inherit;” (as used in Eric Meyer’s CSS Reset 2.0) causes JavaScript error in IE 6 and 7》得知原来是和自己先前用的Eric Meyer’s CSS Reset有关系。因为ie7-js的系列脚本未能够很好的处理font: inherit;这种情况,所以导致出现Invalid argument错误,同样的错误发生在IE8.js/IE9.js,IE7.js我没有测试,可能也会有这样的Bug。

在这个帖子中espe…@gmail.com给出了临时解决这个Bug的一个方法,那就是将font: inherit;属性替换为下面的属性:

font-weight: inherit;
font-style: inherit;
font-family: inherit;

我试了一下,确实错误没有了,问题算是解决了,但是接下来我发现个别页面渲染很奇怪,不知何故,哎,看来还是放弃吧。

另外在提供一个解决方案,这个需要修改ie7-js源码的,敬请移步《Issue 354: font: inherit; fails on IE7 and lower》

若无特别说明,本网站文章均为原创,原则上这些文章不允许转载,但是如果阁下是出于研究学习目的可以转载到阁下的个人博客或者主页,转载遵循创作共同性“署名-非商业性使用-相同方式共享”原则,请转载时注明作者出处谢绝商业性、非署名、采集站、垃圾站或者纯粹为了流量的转载。谢谢合作!
请稍后...

发表评论

电子邮件地址不会被公开。 必填项已用*标注