gpt4 book ai didi

javascript - 如何在点击时执行脚本

转载 作者:行者123 更新时间:2023-12-02 21:05:04 24 4
gpt4 key购买 nike

我尝试仅在访问者单击“接受”按钮时创建 cookie,但无法使脚本在单击时执行。这是我的代码:

function myFunction(){
var scripts = document.getElementsByTagName("script");
for (s of scripts) {
if (s.type == "text/plain") {
s.setAttribute('type', 'text/javascript');
eval(s);
}
}
}
<head>
# Some other scripts and title

<script type="text/plain">
document.cookie = "username=John Doe";
alert();
</script>

</head>

<body>
<button href="javascript:void(0);" onclick="myFunction();">
Accept
</button>
</body>

当我点击按钮时,我可以看到脚本的类型从text/plain更改为text/javascript,但我没有管理在此之后执行脚本,即使使用 eval() (检查应用程序的 cookie 后,不会创建新的 cookie,因此我假设它没有执行)。

我在 StackOverflow 上看到了一些其他解决方案,但它们涉及将我想要执行的脚本内容放入 myFunction() 中,但我不想这样做(如果可能的话)。

感谢您的帮助。

最佳答案

var scripts = document.getElementsByTagName("script");
for (s of scripts) {
if (s.type == "text/plain") {
//s.setAttribute('type', 'text/javascript');
eval(s);
}
}

eval(s) 在这里没有意义,s 不包含文本形式的 JavaScript 代码,它是对 DOM 元素的引用。

eval(s.innerText) 将评估脚本元素的内容。

(此时你也不需要修改它的类型,因为脚本元素本身不再参与执行,它只是提供“数据”。)

关于javascript - 如何在点击时执行脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61251410/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com