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