我想覆盖CanvasRenderingContext2D,并且正在使用此代码来做到这一点:
(function() {
var getStackTrace = function() {
var obj = {};
Error.captureStackTrace(obj, getStackTrace);
return obj.stack;
};
var orig_fillText = CanvasRenderingContext2D.prototype.fillText;
CanvasRenderingContext2D.prototype.fillText = function() {
if(arguments !== undefined){
var stackTrace = getStackTrace();
if(stackTrace.indexOf("myText") != -1){
console.log(arguments[0]);
}
}
orig_fillText.apply(this, arguments);
};
}());
如果我直接在控制台上执行该代码,则该代码工作正常,但如果我从Chrome扩展程序内容脚本中执行该代码,则该代码不起作用(我正在向具有相同扩展名的页面添加新HTML,并且该部分正在工作,因此chrome扩展名不是问题)。
我可以注意到我的全局变量也未与网站上的JS共享,所以我想这与某种隔离类型有关吗?