从父窗口调用Iframe中的函数?

时间:2014-08-23 10:33:48

标签: javascript jquery html html5 iframe

我想从父窗口调用Iframe中的函数。如

var iframe = document.getElementById("myframe");
if (iframe) {
   var iframeContent = (iframe.contentWindow || iframe.contentDocument);

   iframeContent.targetFunction();
}

但它不起作用。

由于动态添加了iframe的内容(所有内容都添加到iframe on demand even js file);

我跟着这个

Invoking JavaScript code in an iframe from the parent page

有什么方法可以解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

html中有一个名为postmessage的概念

在相应的脚本中尝试以下代码

在父母

if (window.addEventListener) {
    window.addEventListener ("message", receive, false);        
}
else {
    if (window.attachEvent) {
        window.attachEvent("onmessage",receive, false);
    }
}

function receive(event){
    var data = event.data;
    if(typeof(window[data.func]) == "function"){
        window[data.func].call(null, data.params[0]);
    }
}

function alertMyMessage(msg){

    alert(msg);
}
iFrame中的

function send(){
    window.parent.window.postMessage(
        {'func':'alertMyMessage','params':['Thanks for Helping me']},
        'http://www.my-website.com'
    );
}

提到:https://developer.mozilla.org/en-US/docs/Web/API/Window.postMessage

希望有所帮助