【问题标题】:How to call a script in an iframe from the parent page?如何从父页面调用 iframe 中的脚本?
【发布时间】: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 不为空。

【问题讨论】:

  • 似乎类似于:stackoverflow.com/questions/5477324/… 您可以使用相同的过程调用 addPoint() 方法,当然可能会出现安全问题(必须是相同的域页面)。
  • 这个问题对我帮助不大。这与我正在尝试做的相反。两个页面都在同一个域中。同一个过程是什么意思?

标签: c# javascript asp.net iframe


【解决方案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>
    

    【讨论】:

    • 成功了。正是问题所在。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-10-14
    • 2010-09-20
    • 2013-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多