gpt4 book ai didi

javascript - IE 泄漏动态生成的 javascript 的内存

转载 作者:行者123 更新时间:2023-11-30 13:41:42 26 4
gpt4 key购买 nike

最近我必须定期执行通过 Ajax 从 Web 服务器检索的脚本。我首先创建一个 Script 标签并分配 text 属性来运行脚本。然后,我处理脚本标签只是为了发现在 IE 7 中每次创建时内存都在不断增加。下面的 HTML 说明了这个问题:

<html>
<body>
<span id='m_garbageBin'></span>
<script type="text/javascript">
function buttonClicked()
{
for (var i = 0; i < 100000; i++)
{
var sc = document.createElement("script");
sc.text = "var x=1;";
document.body.appendChild(sc);
m_garbageBin.appendChild(sc);
m_garbageBin.innerHTML = '';
}
}
</script>
<script id='m_dynamicScript' type="text/javascript">
</script>
<input type='button' value='Click me!' onclick='buttonClicked();'/>
</body>

该脚本根本没有做任何事情,并且在 IE 中每次单击按钮时内存仍然在增加,但在 Firefox 中没有(通过使用 .innerHTML 而不是 .text)。我必须检索脚本以定期执行的事实无法更改。任何人都知道我可以做些什么来避免 IE 中的内存增加?

最佳答案

尝试在添加 script 元素后删除它们,这样的事情可能会有所帮助:

function buttonClicked() {
var head = document.getElementsByTagName('head')[0];
for (var i = 0; i < 100000; i++) {
var script = document.createElement("script");
script.type = "text/javascript";
script.text = "var x=1;";
head.appendChild(script);
head.removeChild(script);
}
}

这就是一些现代库的方式,例如 jQuery make it .

另见:

关于javascript - IE 泄漏动态生成的 javascript 的内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1972874/

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