我使用常规javascript创建了一个iframe。因为iframe是Jquery函数和JQuery。该代码可以在iframe中运行。我想让父页面执行该功能,而不是在iframe中。 iFrame和所有内容都是从同一个域加载的,尽管创建iframe的代码可以在任何网站上运行。例如,如果siteB,siteA运行代码,siteA& B可以为siteZ的网站内容创建iframe。
以下是我想在父页面中运行的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>
答案 0 :(得分: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,以便我可以更好地查看它。