我有一个JavaScript脚本,它有很多这个功能
document.getElementById(id)
我不希望脚本在这个函数的任何未定义的返回上停止,所以解决方案是用一个钩子类似的函数拦截任何调用,我用这个代码来拦截:
var f = document.getElementById.bind(document);
document.getElementById = function (id) {
if(f(id) !== null) return true;
return false;
}
window.onload = function () {
document.getElementById('ajax').style.display = "block";
}
现在,这个脚本对于像这样的第一度链接属性非常有用:
document.getElementById("html").innerHtml = "Hello"
或
document.getElementById("txt").disabled = true;
脚本将绕过该函数并且不会在返回错误时抛出任何错误,但是当添加另一个类似于此的propoerty时:
document.getElementById('ajax').style.display = "block";
然后脚本将抛出:
TypeError:document.getElementById(...)。style未定义
如果我们有什么东西导致脚本在从函数钩子中找到结果为null(没有带有该id的DOM元素)时死亡,那将是唯一的问题,但我找不到做死或退出函数其他而不是返回虚假。
答案 0 :(得分:0)
您的替换函数会返回true
或false
。它永远不会返回 real document.getElementById()
的原始返回值。
如果你真的想要做类似的工作,你需要返回一个对象来模拟许多代码可能期望从真正的DOM节点获得的DOM API。只返回false
并不会让事情变得更好。