【问题标题】:getting 'not implemented' for window.onload in IE javascript debugger在 IE javascript 调试器中为 window.onload 获取“未实现”
【发布时间】:2012-09-26 21:45:06
【问题描述】:

由于某种原因,IE 不允许我从我的 HTML 页面调用函数。它在函数 addEvent 的调试器中显示“未实现”。我很茫然,非常感谢一些帮助。

这是我网页中的代码(在带有语言选择选项的“选择”标签下方)

<script type="text/javascript">
window.onload = addEvent((document.getElementById('eng')), 'click', redirectEng);
window.onload = addEvent((document.getElementById('chs')), 'click', redirectChs);
window.onload = addEvent((document.getElementById('ger')), 'click', redirectGer);
</script>

【问题讨论】:

  • 即使除了导致该错误的缺少的 addEvent() 函数之外,将 window.onload 连续分配给三个不同的东西是没有意义的。
  • addEvent 函数在一个单独的文件中。 window.onload 用于语言下拉列表。该程序在 Firefox 中运行良好
  • 但是,IE 无法识别 HTML 页面中存在该函数。就像我说的,在 Firefox 中效果很好
  • 如果您对addEvent() 有疑问,请展示addEvent() 的实现。如果您对在另一个文件中声明的函数有问题,请显示包含另一个文件的脚本标记。

标签: javascript internet-explorer debugging


【解决方案1】:

我猜你真正想要的是这样的:

window.onload = function() {
  addEvent((document.getElementById('eng')), 'click', redirectEng);
  addEvent((document.getElementById('chs')), 'click', redirectChs);
  addEvent((document.getElementById('ger')), 'click', redirectGer);
};

您的代码可能在 FF 下工作,但它仍然是一个非常非常糟糕的代码。你误解了概念。多次分配给.onload?无意义。 .onload 也必须是一个函数。也许 FF 不会抛出错误(与 IE 不同),但我仍然确信您的代码完全可以在没有 window.onload 的情况下在 FF 下运行。

在那种特殊情况下,我不得不说(因为它不经常发生):这不是 IE 的错。 :-)

编辑

显然 IE 对window.onload 有一些问题。阅读此主题:

window.onload() is not firing with IE 8 in first shot

了解更多详情。对于跨浏览器的兼容性,我建议您查看一些著名的 JavaScript 库,例如 jQuery。使用 jQuery,任务将非常简单:

$(function(){
    $( '#eng' ).click( redirectEng );
    $( '#chs' ).click( redirectChs );
    $( '#ger' ).click( redirectGet );
});

【讨论】:

  • 感谢您的帮助。我对 Javascript 非常陌生(只有大约 6 周),我必须在星期五之前完成这项工作。现在 IE 调试器说没有错,但由于某种原因,我的“点击”触发器在 IE 中不起作用——或者至少,这是我能想到的唯一想法。有什么想法吗?
  • 如果你使用像jQuery这样的框架,你可能会工作得更快。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多