2013-03-02 4 views
4

Я пытаюсь вызвать скрипт в IFrame с родительской страницы из кода позади. C# я использую, чтобы вызвать функцию:Как вызвать скрипт в iframe с родительской страницы?

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); 
} 

из HTML Iframe в:

<iframe name="mapframe" id="mapframe" src="Map.html" style="width:100%;height:360px;"></iframe> 

И Javascript в IFrame:

  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 не был нулевым.

+0

Кажется, подобное: http://stackoverflow.com/questions/5477324/iframe-calling-parent-javascript Вы могли бы назвать addPoint() метод с использованием одного и того же процесса и, конечно, могут возникнуть проблемы безопасности (должны быть одинаковые страницы доменов). –

+0

Этот вопрос мне не очень помогает. Это противоположность тому, что я пытаюсь сделать. Обе страницы находятся в одном домене. Что вы подразумеваете под одним и тем же процессом? – msbg

ответ

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> 
+0

Пригвоздил его. Именно эта проблема. Спасибо. – msbg

0

после загрузки IFrame затем после того, как вы можете вызвать функцию add point. или вы можете поместить вызов этой функции в onload случае

Смежные вопросы