我有一个字符串,其中包含htmlscript
标记,该标记包含一些javascript代码。我通过websocket
从另一个服务器接收到该代码。
该字符串包含一些javascript代码,这些代码对DOM执行一些更改。所以我想评估这个字符串。我知道eval()
函数评估用字符串表示的JavaScript代码。但当我评估这个字符串时,我会得到一些转义错误。
有没有任何方法可以将带有javascript代码的字符串附加到DOM中,并在将代码插入DOM时对其进行评估。
所以考虑我有一个变量chain
,类似于下面的
let chain = "<script>console.log('test')</script>";
我想将作为html脚本标记表示的字符串附加到DOM中,并希望在将其插入DOM的同时对其进行评估。在那之后,我希望有一些登录到浏览器控制台。
我想这就是您想要的。
注意:我不得不将字符串中的结束标记从</script>
更改为</script>
,以使代码片段在SO:上工作
let chain = "<script>console.log('Test')</script>";
let code = chain.replace('<script>','').replace('</script>','')
let script = document.createElement('script')
script.onload = eval(code)
document.body.appendChild(script);
如果您只是想对接收到的字符串执行eval
,则需要剥离标签并将eval
作为新字符串。
下面的代码片段应该可以满足您的基本需求。请记住,不推荐使用eval
。
let chain = "<script>console.log('test')</script>";
let code = chain.replaceAll(/</?[^<>]*>/g, "");
console.log(chain, code);
eval(code);