【发布时间】:2014-12-10 14:13:40
【问题描述】:
我用谷歌搜索了这个问题,并尝试了很多 sn-ps;但一无所获。如何防止iframe 运行两次加载事件?
PAGE.HTML: 在http://maindomain.com运行
<div class="regionBody">
<iframe frameborder="0" allowtransparency="true" src="http://externaldomain.com/iframepage" height="215" style="border:none;width:100%;"></iframe>
</div>
<script>
$('.regionBody iframe').css({height: someCalculatedHeight});
</script>
IFRAMEPAGE.HTML: 在http://externaldomain.com运行
<div>some elements...</div>
<script src="frame-script.js"/>
frame-script.js:
var requestsTimeout = null;
function doRequests(callback) {
clearTimeout(requestsTimeout);
$.ajax({
cache: false,
url: some-url,
dataType: 'json',
type: 'GET'
}).done(function (data) {
// putting the result in frame's body
}).complete(function () {
clearTimeout(requestsTimeout);
callback();
});
}
function startRequests() {
requestsTimeout = setTimeout(function () {
console.log('Doing requests...');
doRequests(startRequests);
}, 5000);
}
$(window).load(function () {
console.log('IFrame loaded...');
$(window).resize(function () {
clearTimeout(requestsTimeout);
});
$(this).resize(function () {
clearTimeout(requestsTimeout);
});
$('body').resize(function () {
clearTimeout(requestsTimeout);
});
startRequests();
});
如您所见,我已经尝试了任何可能的方法来防止两次运行 ajax 请求。但我仍然可以在控制台中看到哪些 ajax 调用并行进行了两次。我的意思是我同时收到重复的Doing requests... 消息,等等。请问有什么建议吗?提前致谢。
【问题讨论】:
-
你的sn-p好像太复杂了,为什么要超时调用request?
-
因为我想在一段时间内重复通话
-
哈好吧,我错过了你在超时回调中回忆的部分:
doRequests(startRequests); -
我越看你的问题,就越不确定你想要达到什么目的……我理解正确吗?
-
@Bigood 我正在尝试创建一个 ajax 请求周期。但似乎代码正在循环。
标签: javascript jquery html iframe