Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/460.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript Drupal模块中多次加载回调事件_Javascript_Php_Ajax_Iframe_Drupal - Fatal编程技术网

javascript Drupal模块中多次加载回调事件

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会发送

我和Drupal7一起工作。我正在从JavaScript文件向模块文件项中的回调函数发出ajax请求。ajax的触发器是从模块模板中的iFrame加载源中的postMessage。通过调试,我意识到当第一次加载iFrame时,JavaScript文件中的eventListener从postMessage接收事件,ajax执行一次。但是在会话中第二次加载iFrame时,事件只启动一次,而ajax执行两次。第三次,事件启动一次,ajax执行三次。等等


当触发ajax的事件只收到一次时,ajax会发送几次,这是什么原因?

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

在drupal.org上阅读并尝试至少实现jQueryOnce插件

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

如果这还不够,您需要实现某种开关或触发器规则。或者阻止从某些预处理函数向iframe添加JavaScript。

如果在iframe中调用同一页面,并且脚本在没有上下文条件的情况下执行,则脚本将被触发两次。。思维方式