gpt4 book ai didi

javascript - 停止 jQuery 评估已执行的脚本

转载 作者:行者123 更新时间:2023-12-02 18:41:48 24 4
gpt4 key购买 nike

我有一个历史 API 脚本,可以加载新的页面内容,而无需刷新页面。我遇到了内联脚本的问题,其中脚本由 jQuery 评估,即使它们之前已经这样做过。例如,如果有人重新访问带有内联脚本的页面,则该脚本将在他们每次重新访问时执行。这会导致问题,例如如果在脚本中添加 DOM 元素,那么如果他们多次访问该页面,则该元素将被添加多次。

由于一些我不会讨论的原因,我无法将这些内联脚本放入外部文件并以这种方式加载它们。

这是处理脚本的代码;

dom.filter('script').each(function(){//function to allow inline javascript, has to be after page fadeIn incase scripts reference page DOM

$.globalEval(this.text || this.textContent || this.innerHTML || '');
var script_src = ($(this).attr('src'));

if (script_src === 'AJAX/request_feed.js' || script_src === 'js/profile.js'){
$(window).unbind('scroll');
$.getScript(script_src);
}

});

如果您需要整个历史脚本中的更多部分,请尽管询问。但我认为它们不是必需的。

注意:if 子句适用于我拥有的滚动加载器。我有两个scroll_loader,因此每次都需要取消绑定(bind)和绑定(bind)滚动事件。不过无需担心这一点。

最佳答案

您可以将执行的脚本存储在 cookie 中,然后在执行之前检查 cookie。不管怎样,您需要某种方法来跟踪已执行的内容和尚未执行的内容。

替代建议

您可以调整脚本以进行 self 调节:

myscript.js:

(function(){
if ($(this).parent().script_registry.inArray('myscript')) return false;
$(this).parent().script_registry.push('myscript'); // Register this script as launched

alert('Do stuff..');
});

注意:上面的代码在语法上可能不是 100% 正确。

关于javascript - 停止 jQuery 评估已执行的脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16774519/

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