如何从父页面调用iframe中的脚本?

时间:2013-03-02 01:16:57

标签: c# javascript asp.net iframe

我正在尝试从后面的代码中的父页面调用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不为null。

2 个答案:

答案 0 :(得分:5)

当您尝试调用该函数时,问题可能是您的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>

答案 1 :(得分:0)

加载iframe然后可以调用函数添加点。 或者您可以在onload事件

中调用此函数