我在JavaScript中打开iframe:
righttop.location = "timesheet_notes.php";
然后想要传递信息:
righttop.document.notesform.ID_client.value = Client;
显然,在页面完全加载到iframe之前,该行不会起作用,并且该表单元素将被写入。
那么,解决这个问题的最佳/最有效方法是什么?某种超时循环?理想情况下,我真的希望将它全部保存在这个特定的脚本中,而不是必须向正在打开的页面添加任何额外的东西。
答案 0 :(得分:52)
首先,我认为你应该影响iframe的src
属性,而不是location
。其次,挂钩iframe的load
事件来执行更改:
var myIframe = document.getElementById('righttop');
myIframe.addEventListener("load", function() {
this.contentWindow.document.notesform.ID_client.value = Client;
});
myIframe.src = 'timesheet_notes.php';
同样,这都是假设你的意思是 i 框架,而不是框架集。
答案 1 :(得分:5)
我想你可以用jQuery轻松做到这一点...... jQuery Home
只需将页面挂钩到jQuery $ function ()
...例如
$(document).ready(function() {
$('iframe').load(function() {
// write your code here....
}
快速浏览文件上传器示例: Using iframes for multiple file uploads...
答案 2 :(得分:0)
尝试这个...
$('iframe').each(function() {
$(this).ready(function() {
$('#result').html("ready");
});
});
答案 3 :(得分:0)
iFrame 可以有动态加载的元素,使用它们的最佳选择是使用递归:
$('iframe').ready(function() {
var triggerMeAgainIfNeeded = function() {
setTimeout(function() {
var neededElm = $('.someElementThatLoadedAfterIframe');
if (neededElm.length > 0) {
// do your job
} else {
triggerMeAgainIfNeeded();
}
}, 10);
}
});