gpt4 book ai didi

Prototype 的 Ajax.Updater 导致 JavaScript 内存丢失?

转载 作者:行者123 更新时间:2023-11-30 06:04:56 25 4
gpt4 key购买 nike

我不确定这是一个特定于 Prototype 的问题,但由于我在不使用 Prototype 时没有遇到这个问题,我想它是。

我正在使用 Ajax.Updater 将一些外部 HTML 附加到我的 DOM 树。在外部文件中有一些脚本元素。由于我已将 evalScripts 选项设置为 true,因此它们都会被评估。但是当我稍后尝试访问已在脚本元素中设置的对象时,它们不再存在。例如:

<script type="text/javascript">
var test = true;
console.log(test); // Works fine, obviously.
</script>

<input type="text" onkeydown="console.log(test)"> <!-- Throws an ReferenceError exception (test is not defined) when the event is fired. -->

如果我使用 Ajax.Updater 请求此脚本元素将按预期运行,但在评估之后测试变量似乎已被删除。谁知道这是怎么回事?

最佳答案

你可以解决这个问题

<script type="text/javascript">
window.test = true; // global on window
console.log(test); // Works fine, obviously.
</script>

Ajax.Updater 最终会在您的脚本中调用它:

function evalScripts() {
return this.extractScripts().map(function(script) { return eval(script) });
}

由于 eval 在本地工作,您会发现 var test 实际上是 function(script) { ... } 的局部变量。 p>

这是你的问题。这是原型(prototype)不像 jQuery 那样进行全局评估的问题。

你可以努力寻找它,也可以撞上这个 ticket .

关于Prototype 的 Ajax.Updater 导致 JavaScript 内存丢失?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5635607/

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