gpt4 book ai didi

javascript - 动态脚本加载 - 安全吗?

转载 作者:行者123 更新时间:2023-11-28 09:35:44 25 4
gpt4 key购买 nike

function LoadFoo(selected_foo) {
var foobar = selected_foo.bar;
var head = document.getElementsByTagName('head')[0];
var nextfoo = document.createElement('script');
nextfoo.type= 'text/javascript';
nextfoo.src="foobaz.php?form=foo" + ... + "&foobar=" + foobar; // a php script which reads from MYSQL and generates script that updates selectboxes of the document
head.appendChild(nextfoo) }

在 Chrome 版本 23.0.1271.26、FF 16、IE 9 上进行测试,到目前为止没有问题。但我有点担心,因为我以前从未接触过JS,也没有在IE6~8上进行过测试。另外,由于每次执行都会创建更多的 nextfoo 对象,这不会有问题吗?我尝试添加 head.removeChild(nextfoo); ,但放弃了它,因为它使 nextfoo 无法在 IE9 上工作。

最佳答案

您当前的代码创建了新的脚本标记,它不太理想,但它不会真正导致任何问题(除了可能将数百个脚本标记添加到您的页面之外。将其更改为使用 xmlhttp 或类似的东西会更好。阅读您的评论我猜你有点坚持你所拥有的东西?

如果您只是遇到 .src 属性问题,您可以尝试使用 setAttribute 进行设置。

function LoadFoo(selected_foo) {
var foobar = selected_foo.bar;
var head = document.getElementsByTagName('head')[0];
var nextfoo = document.createElement('script');
nextfoo.setAttribute("type", "text/javascript");
nextfoo.setAttribute("src", "foobaz.php?form=foo" + ... + "&foobar=" + foobar);
head.appendChild(nextfoo) }

我不确定您要使用removeChild() 位,如果您尝试在完成后删除刚刚加载的内容,则无法将其添加到此函数中。 (它可能会在加载之前删除元素)

您可以删除旧的 foo(通过添加 ID 或其他内容来区分每个脚本标记),但如果您快速加载大量文件,您可能会遇到删除未加载的文件的相同问题。

关于javascript - 动态脚本加载 - 安全吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13075929/

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