我的目标是让一个父页面将iframe的src从空白更改为其正确的url(以便在给定点使用iframe中的onload处理程序,但是在该点旁边)然后操纵iframe的内容。但是,当DOM加载时,javascript似乎忘记了iframe上没有的任何元素。有没有办法解决这个问题?
setTimeouts旨在允许加载DOM和iframe。 编辑:修复一些东西。 这是包含页面:
<html><head>
<script type="text/javascript">
var done = false;
var theIframe;
window.onload = function () {
setTimeout('stuff()', 2000);
clearTimeout('stuff()');
}
function stuff() {
if (!done) {
theIframe = window.myiframe;
theIframe.src = 'http://localhost/TestStuff/redirectIframe.jsp';
done = true;
stuff();
} else {
theIframe.setMe = true;
}
}
</script>
</head>
<body>
<iframe src="" width="500" height="500" id="myiframe" name="myiframe">
</iframe>
</body>
这是iframe:
<html>
<head>
<script type="text/javascript">
var setMe = false;
window.onload = setInterval('checker()', 1000);
function checker() {
alert('hi');
if (setMe) {
window.onload = null;
top.location = 'http://www.google.com';
alert('foundit');
} else alert('a');
}
</script>
</head>
<body></body>
</html>
有什么想法吗?
答案 0 :(得分:0)
在这段代码中:
theIframe.src = ...;
stuff();
你正在立即调用stuff()
,与你所描述的相反,所以实际上你不允许任何时间加载页面。也许你对setTimeout
如何工作感到困惑:它只是在指定的时间之后安排一次执行,它不会自动延迟对函数的所有调用。
此外,您只能将clearTimeout
与setTimeout
返回的先前ID一起使用,而不能使用您现在拥有的代码。
尝试这样的事情:
window.onload = function() {
loadFrame();
}
function loadFrame() {
theIframe = ...;
theIframe.src = ...;
setTimeout(setSomething, 2000);
}
function setSomething() {
theIframe.setMe = true;
}