在 Firefox 上开发的 Javascript 在 IE 上失败的典型原因是什么? [英] What are the typical reasons Javascript developed on Firefox fails on IE?

查看:14
本文介绍了在 Firefox 上开发的 Javascript 在 IE 上失败的典型原因是什么?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我开发了一些 javascript 增强页面,它们在最近的 Firefox 和 Safari 上运行良好.我错过了检查 Internet Explorer,现在我发现这些页面在 IE 6 和 7(到目前为止)上不起作用.脚本以某种方式未执行,页面显示好像 javascript 不存在,尽管执行了一些 javascript.我使用自己的库进行 dom 操作,从 YUI 2 我使用 YUI-Loader 和 XML-Http-Request,在一个页面上我使用psupload",这取决于 JQuery.

我正在从 Office XP 安装 Microsoft 脚本编辑器,现在将进行调试.我现在也会写具体的测试.

IE 的典型失败点是什么?我可以睁开眼睛的方向是什么.

我找到了这个页面,其中显示了一些差异.访问:Quirksmode

您能否根据您的经验说出一些我应该首先寻找的典型事物?

稍后我还会在这里针对特定任务提出更多问题,但现在我对您的经验很感兴趣,为什么 IE 通常会在 Firefox 中运行良好的脚本上失败

感谢您提供所有这些出色的答案!

与此同时,我调整了整个代码,使其也适用于 Internet Explorer.我现在集成了 jQuery 并在它之上构建了我自己的类.这是我的基本错误,我没有从一开始就在 jQuery 上构建我所有的东西.现在我有.

JSLint 也帮了我很多.

来自不同答案的许多单一问题都有帮助.

解决方案

如果您发现任何错误/遗漏等,请随时更新此列表.

注意: IE9 修复了以下许多问题,因此其中大部分仅适用于 IE8 及以下版本,并且在一定程度上适用于 quirks 模式下的 IE9.例如,IE9 原生支持 SVG、,但是你必须 启用标准合规模式 以便它们可用.


##General:

  • 部分加载文档的问题:最好将 JavaScript 添加到 window.onload 或类似事件中,因为 IE 不支持许多操作在部分加载的文档中.

  • 不同的属性:在 CSS 中,IE 中的 elm.style.styleFloat 与 Firefox 中的 elm.style.cssFloat.在 标签中,for 属性在 IE 中使用 elm.htmlFor 访问,而 elm.for 在火狐.请注意,for 在 IE 中是保留的,因此 elm['for'] 可能是阻止 IE 引发异常的更好主意.


##Base JavaScript 语言:

  • 访问字符串中的字符:IE 不支持 'string'[0],因为它不在原始 JavaScript 规范中.使用 'string'.charAt(0)'string'.split('')[0] 注意到访问数组中的项目比使用 快得多charAt 在 IE 中带有字符串(尽管第一次调用 split 时会有一些初始开销.)

  • 对象结尾前的逗号:例如{'foo': 'bar',} 在 IE 中是不允许的.


##Element 特定问题:

  • 获取 IFrame 的 document:

    • Firefox 和 IE8+: IFrame.contentDocument(IE 开始支持此 来自版本 8.)
    • IE: IFrame.contentWindow.document
    • (IFrame.contentWindow 指的是两个浏览器中的 window.)

  • Canvas:IE9 之前的 IE 版本不支持 元素.IE 确实支持 VML 但是这是一种类似的技术,并且 explorercanvas 可以为许多操作的 元素提供就地包装.请注意,在使用 VML 时,标准合规模式下的 IE8 比 quirks 模式下的 IE8 慢很多倍,故障也多得多.

  • SVG: IE9 原生支持 SVG.IE6-8 可以支持 SVG,但只有 外部插件,其中只有一些插件支持 JavaScript 操作.

  • : 仅在 IE9 中受支持.

  • 动态创建单选按钮: IE <8 有一个错误,使使用 document.createElement 创建的单选按钮无法检查.另见 您如何在 Javascript 中动态创建适用于所有浏览器的单选按钮? 寻找解决此问题的方法.

  • 标签中嵌入的 JavaScript 和 IE 中的 onbeforeunload 冲突: 如果 中嵌入了 JavaScript>href a 标记的一部分(例如 然后 IE 将始终显示消息从 onbeforeunload 返回,除非 onbeforeunload 处理程序被事先删除.另见 关闭标签页时要求确认.

登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆