如何在iframe中调用javascript函数

时间:2013-10-29 22:51:17

标签: javascript iframe

请,我需要在html文档中包含iframe,但还需要从位于同一页面上的Js函数中推送变量(检索cookie值)

<script type=text/JavaScript>
var generateLinkerUrl = function(url){ etc...
  </script>
<body>

<iframe src=
var newUrl =
generateLinkerUrl("http://blog.domain.com/mypage.php") // url of the iframe </iframe>`  

对标签内Js功能的调用是否正确,还是需要添加其他内容?

许多人......

1 个答案:

答案 0 :(得分:0)

您不能将javscript函数放在iframe标记中,就像您正在尝试的那样。目前还不完全清楚你想要完成什么,但这里有一些信息:

如果iframe与主机文档不在同一个域中,那么除了使用[window.postMessage()][1]进行合作通信外,浏览器将阻止两者之间的所有直接javascript访问。

如果iframe与主机文档在同一个域中,那么您可以像这样访问iframe文档:

// iframe is the DOM element of the iframe from the host document
var iframeDocument = iframe.contentDocument || iframe.contentWindow.document;

然后,从那里,您可以进入允许您访问全局javascript变量或函数的窗口。

总而言之,您可以在同一个域中的iframe中调用函数,如下所示:

var iframe = document.getElementById("myIframe");
var iframeDocument = iframe.contentDocument || iframe.contentWindow.document;
var iframeWindow = iframeDocument.window;

// call function in the iFrame
iframeWindow.funcIniFrame("xxx");

如果,您真正要做的是拥有一个从主机文档生成的具有.src属性的iframe,您可以这样做,并且对此类型没有域限制设定:

<iframe id="myIFrame"></iframe>

<script>
document.getElementById("myIFrame").src = generateLinkerUrl("http://blog.domain.com/mypage.php");
</script>