【问题标题】:location.reload() in site's frontend is interferring with site's admin backend站点前端中的 location.reload() 干扰站点的管理后端
【发布时间】:2013-04-18 13:18:41
【问题描述】:

这是我的代码:

// Reload screen after submission and completion of AJAX actions
$('.view-whiteboard, .view-whiteboard-full').ajaxStop(function() {
  location.reload();
});

我在我的 Drupal 网站的前端运行了这段代码,但由于某种原因,当我在后端管理面板中提交/保存任何内容时,上面的 sn-p 代码会使页面重新加载。

我很困惑为什么要这样做,因为我已经在代码中定义了应该特定于前端表单的类名。

我是否在上面的代码中遗漏了一些东西,所以我在每次提交表单时都会触发 location.reload()?

任何帮助都会很棒。谢谢--

【问题讨论】:

    标签: jquery drupal-7 drupal-ajax


    【解决方案1】:

    从 jQuery 1.8 开始,.ajaxStop() 方法只能附加到文档。您可以通过创建一个运行 ajaxStop 一次的 .click 函数来解决此问题:

    $(document).ready(function(){
        $(".view-whiteboard, .view-whiteboard-full").click(function(){
            $(document).one("ajaxStop", function() {
                location.reload();
            });
        });
    });
    

    否则,只需将 public 和 admin 主题分开,这样它们就不会使用相同的 javascript(必须禁用覆盖模块)。

    【讨论】:

    • 嗨帕特里克。谢谢回复。你知道在使用 admin 覆盖模块时将公共 js 与 admin 分离的最佳方法是什么吗?换句话说:在使用该模块时,是否仍然可以将公共和管理员中的 js 分开?如果没有,您是否知道我可以使用的另一种 jQuery AJAX 方法,它不会针对文档,而是仅针对具有特定类名的元素?
    • 我用一次性 ajaxStop 测试了点击功能。这应该够了吧。请参阅上面的编辑。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-26
    • 1970-01-01
    • 2011-09-27
    • 1970-01-01
    相关资源
    最近更新 更多