【问题标题】:Multiple loads of callback event in a javascript Drupal modulejavascript Drupal模块中多次加载回调事件
【发布时间】:2018-04-15 12:44:31
【问题描述】:

我正在使用 Drupal 7。我正在从 JavaScript 文件向模块文件中的项目中的回调函数发出 ajax 请求。 ajax 的触发器是来自模块模板中的 iFrame 的源中的 postMessage 加载。通过调试,我发现第一次加载iFrame时,JavaScript文件中的eventListener接收到postMessage的事件,并执行一次ajax。但是在会话中第二次加载 iFrame,事件仅启动一次,但 ajax 执行两次。第三次,事件启动一次,ajax执行三次。以此类推。

是什么让 ajax 被发送多次,而触发它的事件只被接收一次?

【问题讨论】:

  • 如果您在 iframe 中调用同一页面并且您的脚本在没有上下文条件的情况下执行,您的脚本将被触发两次......逻辑!

标签: javascript php ajax iframe drupal


【解决方案1】:

正如@Fky 在他的评论中提到的,这似乎很明显,因为您的页面和 iframe 都将加载相同的 JS。

在 drupal.org 上阅读 JavaScript behaviors / JavaScript on AJAX forms 并尝试至少实现 jQuery Once 插件。

jQuery('.foo', context).once('foo').css('color', 'red');

如果这还不够,您需要实施某种开关或触发规则。或者阻止通过某些预处理函数将 JavaScript 添加到 iframe。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多