【问题标题】:Regarding IE 10 issue while overriding the native DOM methods关于覆盖本机 DOM 方法时的 IE 10 问题
【发布时间】:2013-10-22 17:29:41
【问题描述】:

JS

var _getElementById = document.getElementById;
//override document.getElementById
document.getElementById = function (id) {
    var _elem = _getElementById(id);
    eval("_elem." + name + " = fn");
    return _elem;
};

它在 IE9 中运行良好,但现在 IE10 不支持此 javascript。
我在此评论中收到错误

var _elem = _getElementById(id);

页面加载时。
你有什么解决办法吗?

【问题讨论】:

  • 我看不懂代码。为什么要使用 eval?
  • 您看到了什么确切的错误?小提琴也会有所帮助。
  • 不错的 hack 顺便说一句,我会在 IE 中检查它并尝试找到答案。但我的第一个猜测是,您对旧 getElementById 的存储引用有些不允许,但我不确定。

标签: javascript jquery html internet-explorer


【解决方案1】:

您收到此错误的原因是,文档的 getElementById 方法似乎绑定到文档对象,但我不能 100% 确定为什么这只发生在 IE10 上,但是您可以通过在文档对象中存储对原始函数的引用来轻松克服。见:

document._getElementById = document.getElementById;
//override document.getElementById
document.getElementById = function (id) {
    var _elem = document._getElementById(id);
    eval("_elem." + name + " = fn");
    return _elem;
};

顺便说一句,这仍然会引发错误,因为未定义名称变量。我猜这是微不足道的。

【讨论】:

  • 我正在使用此代码将 document.getElementById 覆盖为 document._getElementById。但它显示'SCRIPT28:堆栈空间不足'错误。请提供解决方案。
  • 您必须给出一个完整的代码示例,该示例会产生您描述的错误,在我的版本中,我能够正常工作,除非我访问产生错误的代码,否则我无法给出解决方案。跨度>
猜你喜欢
  • 1970-01-01
  • 2023-03-07
  • 1970-01-01
  • 1970-01-01
  • 2019-02-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多