有angularjs
个应用程序,我正在使用它。在我的网页中,我正在iframe
中加载应用程序 - 我只是想知道ifame
是否已加载。为此,我使用:
//但我不喜欢这个。
var myTimeout = function () {
setTimeout(function(){
if($('.ssueContentIframe').length > 0 ) {
penetrate();
return;
}
myTimeout();
}, 10000);
};
myTimeout();
iframe
中的内容有多少内容不断加载和更改。但是我需要在类名为.ui-grid-icon-ok
的元素中添加一个事件 - 我如何从document
听到element existence
- 任何人帮助我?
答案 0 :(得分:1)
如果没有CORS或XSS约束,您应该可以执行以下操作。
var what = document.getElementById('what');
function checkIframeLoaded() {
try {
// Get a handle to the iframe element
var iframe = document.getElementById('iframe');
var iframeDoc = iframe.contentDocument || iframe.contentWindow.document;
what.appendChild(document.createTextNode("Checking...\n"));
// Check if loading is complete
if (iframeDoc.readyState == 'complete') {
afterLoading();
return;
}
} catch (err) {
alert(err);
}
// If we are here, it is not loaded. Set things up so we check the status again in 100 milliseconds
window.setTimeout(checkIframeLoaded, 100);
}
function afterLoading() {
what.appendChild(document.createTextNode("It loaded!\n"));
}
checkIframeLoaded();
iframe {
width: 100px;
height: 25px;
}
<iframe id="iframe" src="data:text/plain,"></iframe>
<pre id="what">Not loaded.</pre>
如果存在任何约束(例如沙盒,CORS,XSS等),您每隔10分钟就会收到一个警告对话框,并且我希望您能够单击复选框忽略它们。 :)
注意:这是this other stack overflow answer的修改版本,已展开以展示错误。