3

这似乎是很多人都遇到过的问题!链接到谷歌搜索结果

有很多答案,我研究了一些更合理的答案,并修复了页面上的任何 javascript 错误。在 Chrome 中,我没有发现任何错误,但在 IE8 中,我在第 205 行错误中收到无效参数,并且状态下拉列表丢失。我不是 javascript 专家,不知道从哪里开始解决此问题。尤其是当涉及到浏览器细节时。

问题截图

如果您查看 JS 中的第 205 行,则缺少的字段包括:

if (this.regionSelectEl.options.add) {
        this.regionSelectEl.options.add(option);
} else {
        this.regionSelectEl.appendChild(option);
}

这恰好是页面中缺少的区域(状态)选择元素。JS的链接:http: //jsfiddle.net/bms85/LKdsq/1/

这可能是什么原因造成的?

编辑:

我发现原因是与精简的最新版本的现代化程序发生冲突,我正在将现代化程序用于 html5 polyfills。仍在尝试调试冲突。

4

4 回答 4

3

我在 Magento/Modernizr 网站上也遇到了这个问题,Brendan Falkowlski 的回答为我指出了一个解决方案。自从他回答之后,Modernizr 发布了 2.6.x,将 html5shiv 更新到 3.6,其中包括针对特定问题的修复。因此,如果您遇到此问题并使用 2.6 之前的modernizr,更新到最新版本(使用其捆绑的 html5shiv)应该可以解决问题。

于 2012-10-17T14:35:07.580 回答
1

要跨浏览器兼容,您应该这样做

this.regionSelectEl.options[this.regionSelectEl.options.length] = new Option(option.text, option.value);
于 2012-06-18T15:57:04.250 回答
1

Magento 中的 forms.js 与 IE8 中的 Modernizr(当包含 HTML5shiv 时)冲突(也可能更低——未测试)。带有表单验证的页面将显示错误消息。

修复:

与其在 Modernizr 中加载 HTML5shiv,不如从以下网址单独下载 html5shiv.js:https ://github.com/aFarkas/html5shiv

使用此 Layout XML 添加仅将 shiv 提供给 IE8 及更低版本的条件注释:

<action method="addItem"><type>skin_js</type><name>js/html5shiv.js</name><params/><if>lte IE 8</if></action>

然后,您可以构建您的自定义 Modernizr 包并包含它。由于所有浏览器都获得了 Modernizr 脚本,因此这具有减轻现代浏览器脚本的一个很好的副作用。

注意:这会给 IE8 用户带来额外的负担,迫使他们下载额外的脚本,但总比让他们看到错误要好。

于 2012-07-14T19:38:34.550 回答
0

As it turns out IE doesn't like the options.add:

            if (this.regionSelectEl.options.add) {
                this.regionSelectEl.options.add(option);
            } else {
                this.regionSelectEl.appendChild(option);
            }

I simply used appendClild instead.

            if (this.regionSelectEl.options.length > 0 && option.value.length > 0 && option.text.length > 0 && this.regionSelectEl.options.add) {
                //~ this.regionSelectEl.options.add(option);
                this.regionSelectEl.appendChild(option);
            } else {
                this.regionSelectEl.appendChild(option);
            }
于 2012-04-28T14:04:15.760 回答