如何防止javascript函数被重新定义并获取标准函数?
让我解释一下:
我有一个模块,专门用于检测操纵DOM的浏览器扩展程序。
然而,该扩展程序可以重新定义任何原生函数。
因此,我尝试通过iframe元素获取原生函数。
在以下代码中,我这样做了,但是observe方法出现了非法调用错误。
( function() {
//protection against overriding of MutationObserver and XMLHttpRequest method
var iframe_tag = document.createElement('iframe');
document.body.appendChild(iframe_tag);
window.MutationObserver = iframe_tag.contentWindow.MutationObserver;
window.XMLHttpRequest = iframe_tag.contentWindow.XMLHttpRequest;
// Callback function to execute when mutations are observed
var callback = function(mutationsList, observer) {
//Here we detected a change....
};
// binding to window object --> does not work Illegal invocation
MutationObserver.prototype.observe = MutationObserver.prototype.observe.bind(this);
// Create an observer instance linked to the callback function
var bodyobserver = new MutationObserver(callback);
// Start observing the target node for configured mutations
bodyobserver .observe(document.body, config);
} ) ();
这样做对吗/我做错了什么?
MutationObserver
的方法绑定到window
上? - Bergi