这应该是一个简单的,但我有麻烦。我有一个加载.aspx页面的iframe。这个.aspx页面(iframe中的一个)有javascript,我可以尝试访问主页面上的元素,但它似乎永远无法找到它。
即:
这是加载iFrame的.aspx页面。
<body>
<form id="form1" runat="server">
<div>
<iframe src="myframe.aspx" onload="DoIt();" width="100px" height="100%"></iframe>
<div id='dvT'>hello</div>
</div>
</form>
</body>
这是iFrame上的JS:
<script language="javascript" type="text/javascript">
function DoIt() {
alert(parent.document.getElementById('dvT').innerHTML);
}
</script>
我已经尝试过parent.document,this.document,this.contentWindow.document等。
JS必须保留在iFrame中加载的页面上。 任何帮助表示赞赏: - )
1。)给iFrame一个ID 2.)通过iframeid.methodName引用onload for iFrame中的脚本 3.)在其他页面的js上,参考this.parent.document ....
这是固定代码
<body>
<form id="form1" runat="server">
<div>
<iframe src="myframe.aspx" onload="myFrame1234.DoIt();" width="100px" height="100%" id="myFrame1234"></iframe>
<div id='dvT'>hello</div>
</div>
</form>
</body>
<!--- SCRIPT ON myframe.aspx page --->
<script language="javascript" type="text/javascript">
function DoIt() {
alert(this.parent.document.getElementById('dvT').innerHTML);
}
</script>
答案 0 :(得分:1)
你在看什么?当我尝试这个(两个页面都是纯HTML,而不是ASPX)时没有发生任何事情,因为在iframe标签onload事件中调用“DoIt()”并不是指内部框架中的DoIt()函数(但是在父级中寻找DoIt()方法。解决方案:更改
iframe src="myframe.aspx" onload="DoIt();"
至
iframe src="myframe.aspx" onload="contentWindow.DoIt();"
答案 1 :(得分:0)
您可能需要使用parent.parent
或window.top
向上走树 - 因为您的iframe来自同一台服务器,安全模型应该允许您这样做。