【问题标题】:Unload javascript file when modal dialog is closed关闭模式对话框时卸载 javascript 文件
【发布时间】:2022-01-13 02:26:46
【问题描述】:

我有一个模式对话框,其样式显示在客户浏览器的右侧。根据他们在导航栏中单击的图标(这里是一个示例)...

<a class="nav-link right-menu" role="button" data-bs-toggle="modal" data-bs-target="#rightSubMenu" data-id="admin-menu">
    <i class="fas fa-users-crown"></i>
</a>

调用 ajax 并通过名为 .right-sub-menu-content 的附加类将 HTML 片段加载到 modal-body 中。这是ajax调用...

$('.right-menu').click( function() {
    var requestedMenu = $(this).attr('data-id');
    $.ajax({
        type: "POST",
        url: "//" + $(location).attr('hostname') + "/modules/",
        data: {
            'module': requestedMenu
        },
        dataType: "html",
        cache: false,
        success: function(data) {
            $('.right-sub-menu-content').html(data);
        }
    });
});

我还在加载一个 js 文件来处理按钮、附加选择菜单更新等。它使用标准 标记作为 HTML 片段的一部分加载。

我的问题——在一个特定的片段中,我加载了一个仪表板来提供我的管理员服务器状态更新。它使用 setInterval 每 5 分钟通过 ajax 刷新几个 DIV。

我发现在关闭模态对话框后,setInterval 继续运行,即使我破坏了模态体的内容,我认为它会包括作为片段的一部分加载的脚本,使用以下在 main.js 文件中 ...

$('.modal.right').on('hidden.bs.modal', function() {
    $('.right-sub-menu-content').html('');
});

所以我的问题是......因为我正在为其他包含自己的 JS 文件的 HTML 片段重用模态对话框,当模态关闭时如何完全卸载 js 文件?

感谢大家的见解。

【问题讨论】:

    标签: jquery ajax bootstrap-5


    【解决方案1】:

    我认为你应该用clearInterval 停止setInterval 函数,也许这对你有用

    【讨论】:

    • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
    • 我很欣赏这个建议。是的,我绝对可以使用 clearInterval 杀死它。但是,我担心的是,这些 JS 文件的其他部分与它们各自的 HTML 片段一起加载也保留在内存中,并且当它们被加载到模式中时可能会对其他片段造成严重破坏。我希望有一种方法可以在不再需要这些 JS 文件时卸载它们。
    猜你喜欢
    • 1970-01-01
    • 2022-01-12
    • 2021-01-09
    • 1970-01-01
    • 2011-06-06
    • 1970-01-01
    • 2023-04-10
    • 2018-09-23
    • 1970-01-01
    相关资源
    最近更新 更多