拦截Javascript中的特定调用

时间:2009-09-29 18:58:36

标签: javascript javascript-events

我的网站有一个受信任的第三方Javascript库。在运行时,库会将各种其他Javascript块附加到页面上。

我有一个问题,其中一个Javascript块真的搞砸了我在IE中的页面。问题是脚本在加载DOM之前调用了“document.body.appendChild”。 IE真的不喜欢这个。

那么,是否可以拦截对“document.body.appendChild”的所有调用,以便我可以过滤掉某些调用?

编辑:我无法访问第三方脚本。

3 个答案:

答案 0 :(得分:0)

如果DOM尚未加载(即主体不可用),那么答案可能是否定的。您可以尝试通过使用document.body.appendChild名称创建一个属性,这是一个函数,但我不太确定它是否可行 - 或者如果它可以,它可能会与其他东西混在一起

您最好的选择可能是修改JS脚本,或者使其成为仅在完全构建DOM后才加载特定脚本。例如,您可以编写一些JS代码,通过在文档加载完成后将新的脚本标记附加到文档中来动态加载脚本。

答案 1 :(得分:0)

你可以在页面加载后将“document.body.appendChild”作为第三方脚本吗?像这样:

//assuming you can use jquery:    
$(document).ready(function(){
h = document.getElementsByTagName('head')[0];
var q = document.createElement('script');
q.src = 'http://trusted.com/library.js';
q.type = 'text/javascript';
q.id = "trustedjs";
h.appendChild(q);
});

答案 2 :(得分:0)

来自http://code.google.com/p/google-caja/

  

Caja允许网站安全嵌入   DHTML Web应用程序来自第三方   派对,并实现丰富的互动   嵌入页面和。之间   嵌入式应用程序。

并使用呼叫拦截机制

  

由于Web应用程序常用   浏览器API,例如DOM API,   这给了很大的控制权   在网页上,Caja提供了驯服   用于虚拟化部分内容的API   DOM。包含页面可以设置   嵌入应用程序的环境   嵌入式应用程序认为   它与a的DOM交互   整页,但实际上只是   操纵一个有界的部分   通过一个叫做的机制包含页面   虚拟iframe。

该网页上有关于如何联系团队并开始使用的信息。