[英]jQuery.trigger() not firing on refresh
我有一个HTML页面Home.htm
,其中包含一个iframe,该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完全加载之前就触发了。 那可以解释为什么它在需要时找不到$
,但是在您检查它时却在那里。 一个潜在的原因可能是您的数据请求已缓存,因此几乎立即返回。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.