javascript - Jquery ('#iframeid' ).load() 在加载 Iframe 内容(文本、图像)之前执行

标签 javascript jquery iframe internet-explorer-8 jquery-load

我正在尝试访问 Iframe 的 Iframe 的数据。为了强制我的 javascript 函数等待,我使用 jqueries .load 函数。但是我的 javascript 代码仍然“有时”在 iframe 的内容完全加载之前执行。有时我的意思是不同计算机的行为不同。在较慢的计算机上,它等待大多数时间用于较快的计算机,代码几乎总是被执行。所以我怀疑 Internet Explorer 8 会提前触发 onload 事件。是否有任何 jquery 函数可以等待 iframe 的所有元素都加载完毕?

这是我的代码:

function parsePeopleLink(){
try{
    //This is where I check if the wanted I frame already exists
    if(document.getElementById('isolatedWorkArea') != null) {
        if(window.frames[2] != null) {
            if(window.frames[2].name == 'isolatedWorkArea') {
                //This is where I want the following code only to be executed when the Iframe's content is fully loaded, otherwise I get an access denied error when trying to change Userlinks
                $('#isolatedWorkArea').load(function() {
                    for( var i = 0; i < window.frames.length; i++){
                        for(var j = 0; j< window.frames[i].document.frames.length; j++){
                            IframeDocument = window.frames[i].document.frames[j].document;
                            changeUserLink(findPeopleIDfix(findPeopleID(IframeDocument)),findUserLinks(IframeDocument),8, IframeDocument);
                        }
                    }
                });
            }
            else {
                throw e; //I know that all the nested else statements are ugly, I just inserted them for testing purposes
            }   
        }
        else {
            throw e;
        }
    }
    else {
        throw e;
    }
}
catch(e) {
    //alert(e.description);
    for(var k = 0; k < window.frames.length; k++)
    {
        IframeDocument = window.frames[k].document;
        changeUserLink(findPeopleIDfix(findPeopleID(IframeDocument)),findUserLinks(IframeDocument),9, IframeDocument);      
        iframeindex++;
    }
  }
}

所有 iframe 都具有:相同的端口、协议(protocol)和 src。 非常感谢帮助

最佳答案

当完全加载时,Javascript 无法访问外部内容以进行监控。如果您有权访问 iframe 内容,则可以添加对父窗口函数的调用以触发它。

父页面:

function parsePeopleLink() {
    //all your current code like you have it now
}

框架页面:

$(function(){
    parent.parsePeopleLink();
    //This will monitor the document being ready in the framed page 
    //and then trigger the parent's function
});

关于javascript - Jquery ('#iframeid' ).load() 在加载 Iframe 内容(文本、图像)之前执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7027161/

相关文章:

javascript - Angular 6,物化 : initializing javascript

javascript - 检查文本字段中的值是否已更改并发布。 JS。 rails

javascript - document.referrer 没有提供原始页面 url?

javascript - Tinymce - iframe 无法正常工作,它直接显示 url

javascript - 从 JQuery 函数返回值时卡住

javascript - 1.4.4 中的 jquery 实时点击行为

javascript - 无法在 Chrome 的控制台中执行 "split"

javascript - 下拉复选框和未选中的父元素?

php - 使用 iframe 时出现错误 406 Not Acceptable

javascript - 当 div1 显示时关闭其他 div 并重复代码 pb jquery