C# 如何从父页面调用iframe中的脚本?
我试图从代码隐藏的父页面调用IFrame中的脚本。我用来调用函数的C#I:C# 如何从父页面调用iframe中的脚本?,c#,javascript,asp.net,iframe,C#,Javascript,Asp.net,Iframe,我试图从代码隐藏的父页面调用IFrame中的脚本。我用来调用函数的C#I: protected void Page_Load(object sender, EventArgs e) { ... string scr = "document.getElementById('mapframe').contentWindow.addPoint(0, 0);" ClientScript.RegisterStartupScript(GetType(), Guid.NewGuid()
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>
但是,这会导致此错误:“无法获取未定义或空引用的属性'addPoint'。是什么导致了这个错误?我已检查以确保contentWindow不为null。问题可能是在尝试调用该函数时未加载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后,可以调用函数add point。
或者您可以将此函数的调用放在
onload
event中,类似于:您可以使用相同的过程调用addPoint()方法,当然可能会出现安全问题(必须是相同的域页面)。这个问题对我帮助不大。这与我想做的恰恰相反。两个页面都在同一个域中。你说的同一个过程是什么意思?搞定了。正是问题所在。非常感谢。
<iframe
name="mapframe"
id="mapframe"
src="Map.html"
style="width:100%;height:360px;"
onload="this.contentWindow.addPoint(0,0)"></iframe>