0

我用常规的 javascript 创建了一个 iframe。在那个 iframe 中是 Jquery 函数和 JQuery。正如人们所期望的那样,该代码在 iframe 中工作。我想让父页面执行该功能,而不是在 iframe 中。iFrame 和所有内容都是从同一个域加载的,尽管创建 iframe 的代码可以在任何站点上运行。例如,如果 siteB、siteA 运行代码,siteA & B 可以创建 iframe 到 siteZ 的网站内容。

这是到目前为止我想在父页面中运行的 iframe 的代码:

<script>
$(document).ready(function(){                       
    $().intad({
        title: "blahblah",
        url: "http://www.blah.com",
        timeout: 30,
        deplay: 2,
        wait: 3,
        closeable: true
    });
});
</script>

我从 iframe 试过这个:

<script>
$(document).ready(function(){                       
    function intad(){
        title: "blahblah",
        url: "http://www.blah.com",
        timeout: 30,
        deplay: 2,
        wait: 3,
        closeable: true
    });
});
</script>

这来自加载到父页面的代码:

<script>
parent.document.getElementById("RandomIdHere").contentWindow.intads();
</script>
4

1 回答 1

1

在 iFrame 中,您需要将要调用的函数放在window对象上,以便全局访问。

一旦它在那里,从您的主要顶级 html 页面,您可以执行iFrameDomElement.contentWindow.yourFunctionToCall().

编辑:

因此,为了进一步分解它,您的代码会出现许多问题。首先,什么是intad?它是 jquery 原型上的方法吗?如果没有,你做错了什么。这基本上是您需要做的。

在您的主页中,从现在开始我将调用 parent.html。

你需要这样的东西:

// this is a shorthand document ready function
$(function() {

    // we will call this from the iframe
    window.functionInParent = function() {
        // do your work here
    };

    var iframe = document.createElement('iframe');
    iframe.src = 'link/to/iframe/source';

    // if you want to talk to the iframe from this parent page,
    // use this to access the iframe's window object.
    // just make sure that the function you try to call is on the
    // window object of the iframe, just like we did with the function above.
    var iframeWindow = iframe.contentWindow;
});

在你的 iframe 中,你需要这样的东西:

$(function() {
    // your iframe's dom is ready - do stuff here

    // once you are ready, call the parent function
    top.functionInParent();
});

我希望这有帮助。如果您需要进一步的帮助,请将您的工作(或几乎工作)代码放入jsfiddle,以便我可以更好地查看它。

于 2012-05-03T17:56:01.333 回答