当我在控制台中运行我的代码时它工作正常,但是当我加载页面时它给我一个错误 - 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>
Javascript代码
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);
}
页面加载后我转到控制台,我可以看到变量f
已定义,但没有定义任何其他内容。现在,如果我使用控制台并将代码放入一切正常。 minutesUntilCallBack
警告以及正确的calendarItemId
。
我认为iframe
没有正确加载可能是一个问题,所以我把一个监听事件放进去,我必须在运行查看之前的函数popUpWindow()
之前确定iframe
。
我在许多网站上阅读过很多关于类似问题的帖子,但似乎无法得到正确答案。
任何帮助都非常感激。
答案 0 :(得分:0)
您需要将popUpWindow()
函数放在iframe的onload
事件侦听器中。它目前在iframe加载之前运行。 addEventListener
是异步的。
window.frames['DueDateCounter'].addEventListener("load", function() { popUpWindow(); });