如何从父页面调用 iframe 中的脚本?
Posted
技术标签:
【中文标题】如何从父页面调用 iframe 中的脚本?【英文标题】:How to call a script in an iframe from the parent page? 【发布时间】:2013-02-16 15:37:57 【问题描述】:我正在尝试从后面的代码从父页面调用 IFrame 中的脚本。我用来调用函数的C#:
protected void Page_Load(object sender, EventArgs e)
...
string scr = "document.getElementById('mapframe').contentWindow.addPoint(0, 0);"
ClientScript.RegisterStartupScript(GetType(), Guid.NewGuid().ToString(), scr , true);
iFrame 的 html:
<iframe name="mapframe" id="mapframe" src="Map.html" style="width:100%;height:360px;"></iframe>
以及 IFrame 中的 javascript:
function addPoint(lat, lon)
var myLatlng = new google.maps.LatLng(lat, lon);
var marker = new google.maps.Marker(
position: myLatlng,
map: map,
title: "Hit"
);
但是,这会导致此错误:“无法获取未定义或空引用的属性 'addPoint'”。是什么导致了这个错误?我已检查以确保 contentWindow 不为空。
【问题讨论】:
似乎类似于:***.com/questions/5477324/… 您可以使用相同的过程调用 addPoint() 方法,当然可能会出现安全问题(必须是相同的域页面)。 这个问题对我帮助不大。这与我正在尝试做的相反。两个页面都在同一个域中。同一个过程是什么意思? 【参考方案1】:加载 iframe 后,您可以调用函数添加点。
或者你可以把这个函数的调用放在onload
事件中
【讨论】:
【参考方案2】:问题可能是当您尝试调用该函数时您的 iframe 未加载
试试下面的
document.getElementById('mapframe').onload = function()
// I prefer frames.mapFrame.addPoint();
document.getElementById('mapframe').contentWindow.addPoint(0,0);
甚至
<iframe
name="mapframe"
id="mapframe"
src="Map.html"
style="width:100%;height:360px;"
onload="this.contentWindow.addPoint(0,0)"></iframe>
【讨论】:
成功了。正是问题所在。谢谢。以上是关于如何从父页面调用 iframe 中的脚本?的主要内容,如果未能解决你的问题,请参考以下文章
jsp中父页面如何调用iframe中的src子页面中的js方法