Javascript 访问iframe内容-代码在控制台中工作,但在页面加载时不工作

Javascript 访问iframe内容-代码在控制台中工作,但在页面加载时不工作,javascript,jquery,html,iframe,Javascript,Jquery,Html,Iframe,当我在控制台中运行代码时,它工作正常,但当我加载页面时,它会给我一个错误-TypeError:undefined不是一个对象(计算“rowInfo.textContent”) 我有两个网页,一个是家长,另一个是孩子。它们都位于使用相同协议和端口的相同本地服务器上。我还有第三个文件保存javascript。以下是相关代码: 父页面 <html> <head> <title>Broker's Lead List</title>

当我在控制台中运行代码时,它工作正常,但当我加载页面时,它会给我一个错误-TypeError:undefined不是一个对象(计算“rowInfo.textContent”)

我有两个网页,一个是家长,另一个是孩子。它们都位于使用相同协议和端口的相同本地服务器上。我还有第三个文件保存javascript。以下是相关代码:

父页面

<html>
    <head>
        <title>Broker's Lead List</title>

        <link rel="stylesheet" type="text/css" href="style.css"/>
        <script type="text/javascript" src="https://code.jquery.com/jquery-2.1.4.min.js"></script>
        <script type="text/javascript" src="https://c1eru548.caspio.com/scripts/embed.js"></script>
    </head>
    <body>
        <div id="callback"></div>

        <script type="text/javascript" src="scripts.js"></script>
        <script type="text/javascript">
            autoRefresh_div();
            window.frames['DueDateCounter'].addEventListener("load", alert("loaded"));
            popUpWindow();
    </body>
</html>
function autoRefresh_div() {
    $("#callback").empty()
                  .html('<iframe name="DueDateCounter" title="DueDateCounter" ' + 
                             'style="width: 1px; height: 1px" ' + 
                             'src="https://192.168.0.50/CRM/CalanderCountDown.html">Sorry, but// your browser does not support frames.//</iframe>'); 
}

var f, doc, rowInfo, minutesUntilCallBack, calenderItem, calenderItemId;

function popUpWindow() {
    f = $('iframe')[0];

    doc = f.contentDocument? f.contentDocument: f.contentWindow.document;
    rowInfo = doc.getElementsByTagName('td')[0];
    minutesUntilCallBack = rowInfo.textContent;

    calendarItem = f.contentDocument.getElementsByTagName('td')[1];
    calendarItemId = calendarItem.textContent;

    alert(minutesUntilCallBack);
    alert(calendarItemId);
}

经纪人潜在客户名单
autoRefresh_div();
window.frames['DueDateCounter'].addEventListener(“加载”),alert(“加载”);
popUpWindow();
Javascript代码

<html>
    <head>
        <title>Broker's Lead List</title>

        <link rel="stylesheet" type="text/css" href="style.css"/>
        <script type="text/javascript" src="https://code.jquery.com/jquery-2.1.4.min.js"></script>
        <script type="text/javascript" src="https://c1eru548.caspio.com/scripts/embed.js"></script>
    </head>
    <body>
        <div id="callback"></div>

        <script type="text/javascript" src="scripts.js"></script>
        <script type="text/javascript">
            autoRefresh_div();
            window.frames['DueDateCounter'].addEventListener("load", alert("loaded"));
            popUpWindow();
    </body>
</html>
function autoRefresh_div() {
    $("#callback").empty()
                  .html('<iframe name="DueDateCounter" title="DueDateCounter" ' + 
                             'style="width: 1px; height: 1px" ' + 
                             'src="https://192.168.0.50/CRM/CalanderCountDown.html">Sorry, but// your browser does not support frames.//</iframe>'); 
}

var f, doc, rowInfo, minutesUntilCallBack, calenderItem, calenderItemId;

function popUpWindow() {
    f = $('iframe')[0];

    doc = f.contentDocument? f.contentDocument: f.contentWindow.document;
    rowInfo = doc.getElementsByTagName('td')[0];
    minutesUntilCallBack = rowInfo.textContent;

    calendarItem = f.contentDocument.getElementsByTagName('td')[1];
    calendarItemId = calendarItem.textContent;

    alert(minutesUntilCallBack);
    alert(calendarItemId);
}
function autoRefresh_div(){
$(“#回调”).empty()
.html('抱歉,您的浏览器不支持框架。//');
}
变量f、单据、行信息、分钟统计回拨、日历项、日历项ID;
函数popUpWindow(){
f=$('iframe')[0];
doc=f.contentDocument?f.contentDocument:f.contentWindow.document;
rowInfo=doc.getElementsByTagName('td')[0];
minutesUntilCallBack=rowInfo.textContent;
calendarItem=f.contentDocument.getElementsByTagName('td')[1];
calendarItemId=calendarItem.textContent;
警报(分钟数直至回拨);
警报(calendarItemId);
}
加载页面并转到控制台后,我可以看到变量
f
已定义,但未定义任何其他内容。现在,如果我使用控制台并将代码放入所有程序中,一切都会正常工作。
minutesUntilCallBack
会发出警报,正确的
calendarItemId
也会发出警报

我认为
iframe
加载不正确可能是个问题,因此我加入了一个监听事件,在运行查看
iframe
的函数
popUpWindow()
之前,我必须先确定

我在很多网站上读过很多关于类似问题的帖子,但似乎都找不到正确的答案


非常感谢您的帮助。

您需要将
popUpWindow()
函数放在iframe的
onload
事件侦听器中。在加载iframe之前,它当前正在运行
addEventListener
是异步的

window.frames['DueDateCounter'].addEventListener("load", function() { popUpWindow(); });