javascript Drupal模块中多次加载回调事件
我和Drupal7一起工作。我正在从JavaScript文件向模块文件项中的回调函数发出ajax请求。ajax的触发器是从模块模板中的iFrame加载源中的postMessage。通过调试,我意识到当第一次加载iFrame时,JavaScript文件中的eventListener从postMessage接收事件,ajax执行一次。但是在会话中第二次加载iFrame时,事件只启动一次,而ajax执行两次。第三次,事件启动一次,ajax执行三次。等等javascript Drupal模块中多次加载回调事件,javascript,php,ajax,iframe,drupal,Javascript,Php,Ajax,Iframe,Drupal,我和Drupal7一起工作。我正在从JavaScript文件向模块文件项中的回调函数发出ajax请求。ajax的触发器是从模块模板中的iFrame加载源中的postMessage。通过调试,我意识到当第一次加载iFrame时,JavaScript文件中的eventListener从postMessage接收事件,ajax执行一次。但是在会话中第二次加载iFrame时,事件只启动一次,而ajax执行两次。第三次,事件启动一次,ajax执行三次。等等 当触发ajax的事件只收到一次时,ajax会发送
当触发ajax的事件只收到一次时,ajax会发送几次,这是什么原因?正如@Fky在他的评论中提到的,这似乎非常明显,因为您的页面和iframe都将加载相同的JS 在drupal.org上阅读并尝试至少实现jQueryOnce插件
jQuery('.foo', context).once('foo').css('color', 'red');
如果这还不够,您需要实现某种开关或触发器规则。或者阻止从某些预处理函数向iframe添加JavaScript。如果在iframe中调用同一页面,并且脚本在没有上下文条件的情况下执行,则脚本将被触发两次。。思维方式