我正在处理重写document.write的任务(对document.write的调用是来自第三方js,所以是的,我知道它很糟糕,除了ads :()没有人使用它 所以在document.write调用之一中,html字符串包含一个具有onload属性set的iframe,并且由于我在附加iframe时使用了appendChild而不是document.write,因此我需要对代码进行多次修改后执行onload js做。 我试过做这样的事情:
let Eval = function(str){
return eval(str);
}.call(node,OnloadJs);
我正在调用以该节点为上下文的eval(this),因为在onload内运行的js将this设置为当前节点。无论如何,当onload事件包含以下内容时,我遇到了一些问题:
function(){ae.Adrendered(j,Y,0);ae.AdrenderedFinish()}
我得到的错误是:
SyntaxError: Unexpected token (
它具有匿名功能,有什么想法如何有效地处理它?
答案 0 :(得分:1)
我认为您不能随意编写匿名函数表达式,所以解释器将抛出错误,因为它不是命名函数,也不是可以使用匿名函数的上下文。最简单的解决方案是使其成为IIFE
let Eval = function(str){
return eval(str);
}.call(node,`(${OnloadJs})()`);