Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/371.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在正确的上下文中执行Onload属性js_Javascript_Html - Fatal编程技术网

Javascript 在正确的上下文中执行Onload属性js

Javascript 在正确的上下文中执行Onload属性js,javascript,html,Javascript,Html,我正在处理覆盖document.write的任务。对document.write的调用来自第三方js,因此是的,我知道它很糟糕,除了广告,没有人使用它: 因此,在其中一个document.write调用中,html字符串包含一个设置了onload属性的iframe,并且因为我使用的是appendChild而不是document.write,所以当我附加iframe时,我需要在代码进行多次修改后执行onload js。 我试过这样做: let Eval = function(str){

我正在处理覆盖document.write的任务。对document.write的调用来自第三方js,因此是的,我知道它很糟糕,除了广告,没有人使用它: 因此,在其中一个document.write调用中,html字符串包含一个设置了onload属性的iframe,并且因为我使用的是appendChild而不是document.write,所以当我附加iframe时,我需要在代码进行多次修改后执行onload js。 我试过这样做:

let Eval = function(str){

            return eval(str);
        }.call(node,OnloadJs);
我使用节点作为上下文调用eval,因为在onload中运行的js将this设置为当前节点。无论如何,当onload事件包含以下内容时,我遇到了一些问题:

function(){ae.Adrendered(j,Y,0);ae.AdrenderedFinish()}
我得到的错误是:

SyntaxError: Unexpected token (

这是一个匿名函数,有没有办法有效地处理它

我不认为您可以随意使用匿名函数表达式,因此解释器会抛出一个错误,因为它不是一个命名函数,也不是一个可以使用匿名函数的上下文。最简单的解决办法就是让它成为一种生活

let Eval = function(str){
            return eval(str);
        }.call(node,`(${OnloadJs})()`);

注意:以上是一个坏主意,不是一个通用的解决方案,并增加了技术债务。OP情况的具体答案。

该代码应该做什么?它试图声明一个没有标识符的函数,使其不可调用。给它一个带有函数x{…}的标识符可以避免语法错误,但是如果没有人调用它,则不清楚该将标识符设置为什么…这是无效代码,因此使用与浏览器相同的方法处理它;不要运行它。@Jacob这不是我的代码,因为我说过这是第三方js,如果我正常运行js,代码执行很好,所以我需要模拟onload执行非常感谢!我仍然持有正确的结论,对吗?它应该能够解决ae,因为它在父范围内。您可以将调用从${OnloadJs}更改为${OnloadJs}。如果您真的愿意,可以调用此函数,但这应该是不必要的。因此,我决定保留我的方法,但我遇到了另一个问题,iframe onload包含如下内容。contentWindow.postmessagewindow,。。。。。在我的方法中,这是iframe节点,这很好,但窗口对象是主页的窗口,而不是包含第二个带onload的iframe的iframe,您知道如何使用正确的this传递正确的窗口吗?