Html中iframe跨域调用js函数解决办法

页面a.html域名为www.a.com嵌入页面http://www.b.com/b.html,b.html要调用a.html中的js函数,由于两个页面不在一个域中,会提示没权限。如何解决该问题呢,请看下面示例代码。

a.html内容:

<!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN">

<html>

<head>

<title>A</title>

<metahttp-equiv="pragma"content="no-cache">

<metahttp-equiv="cache-control"content="no-cache">

<metahttp-equiv="expires"content="0">

<scripttype="text/javascript">

functiontest(){

alert(123);

}

</script>

</head>

<body>

主页面<br>

<iframesrc="http://www.b.com/b.html"width="300"height="300"></iframe>

</body>

</html>

b.html内容:

<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<htmlxmlns="http://www.w3.org/1999/xhtml">

<head>

<metahttp-equiv="Content-Type"content="text/html;charset=utf-8"/>

<title>B</title>

<scripttype="text/javascript">

functiont(){

variframeTag=document.getElementById('frameC');

iframeTag.src='http://www.a.html/c.html?time='+newDate();

};

</script>

</head>

<body>

被嵌入页面,与主页面不在同一域名下。

<buttononclick="t();">Test</button>

<iframeid="frameC"style="display:none;"></iframe>

</body>

</html>

c.html内容(c.html与a.html在同一个域下):

<scripttype="text/javascript">

top.test();

</script>

通过代码可以很明显的看出,c.html起着关键作用,在两个域之间做为中转站。通过此方法,可以轻松解决iframe下跨域调用js函数的问题。

http://www.jiguu.com/showArticle.action?kindid=f5a9793032dda73b0132e3da96ed0016&id=f5a97930340f7d1d0134179d7e700004

相关推荐