javascript - jQuery.trigger() 刷新时不触发

标签 javascript jquery html iframe

我有一个 html 页面 Home.htm,其中包含一个 iframe,其中包含另一个页面 Child.htm,即

<body>
   <div>
      <iframe id="child-iframe" src="Child.htm"></iframe>
   </div>
</body>

Home.htm 还包含一些javascript/jQuery,用于检索数据,并根据此数据检索更多信息,然后触发在 Child 中设置的事件.htm 文件在 Child.htm 中显示此信息,即

<script>
   $(document).ready(function () {
      $.getJSON("http://getsummarydata/001")
         .done(function (data) {
             if (data meets some condition) {
                 $.getJSON("http://getspecificdata/001")
                    .done(function (data) {
                       // Trigger the event
                       var target = $("#child-iframe");
                       if (target[0] !== undefined) {                   
                           target[0].contentWindow.$(target[0].contentWindow.document).trigger("data-available", [data]);
                       }
                 });
             }                
         }
   });
</script>

Child.htm中,我已经使用jQuery设置了自定义事件data-available及其处理程序,如下所示;

<script>

   // Event handler
   function myFunc(data) {
      // Display the data
   }

   // Event
   $(document).on('data-available', function (__e, __data) {
      myFunc(__data);
   });

</script>

Home.htm页面首次加载时,数据被成功检索,事件被触发并且数据按预期在iframe中显示。但是,当我刷新 Home.htm (F5) 时,仍然会检索数据,但不再触发触发器 - 事实上,我收到以下错误。

Uncaught TypeError: target[0].contentWindow.$ is not a function

尽管 target[0].contentWindow 看起来没问题。

我不知道为什么刷新时会发生这种情况,非常感谢任何解决此问题的帮助。

保罗

最佳答案

听起来您的事件在 iframe 完全加载之前就已触发。这可以解释为什么它在需要时找不到 $ ,但当你检查它时它就在那里。一个潜在的原因可能是您的数据请求已被缓存,因此几乎立即返回。

关于javascript - jQuery.trigger() 刷新时不触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33543392/

相关文章:

html - 菜单翻转图像和文本仅适用于一个

javascript - 映射 - 分离 Javascript 对象然后附加最后一个对象

javascript - 如何使用map动态地将键值对添加到对象数组中

javascript - jquery Accordion 在部分 ajax 页面重新加载后损坏

php - 如何从数据库中查看任何特定项目的详细信息?

javascript - 获取图像 JS 的方向

javascript - .vue 文件中未定义的属性或方法

JavaScript :Multiple variables returned from a global function isn't able to be accessed by object

javascript - jQuery - 检测两个 html `<span>` 何时包含相同的值

javascript - 使用递归合并选项 javascript 对象