如果使用上面同域的方法,浏览器判断A.html 与 B.html 不同域,会有错误提示。 Uncaught SecurityError: Blocked a frame with origin “http://localhost“ from accessing a frame with origin “http://127.0.0.1“. Protocols, domains, and ports must match.
实现原理:
因为浏览器为了安全,禁止了不同域访问。因此只要调用与执行的双方是同域则可以相互访问。
首先,A.html 如何调用B.html的 fIframe方法
1.在A.html 创建一个 iframe
2.iframe的页面放在 B.html 同域下,命名为execB.html
3.execB.html 里有调用B.html fIframe方法的js调用
1
parent.window.myframe.fIframe(); // execute parent myframe fIframe function
<!DOCTYPE HTMLPUBLIC"-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <metahttp-equiv="content-type"content="text/html; charset=utf-8"> <title> exec main function </title> </head> <body> <scripttype="text/javascript"> parent.parent.fMain(); // execute main function </script> </body> </html>
execB.html
1 2 3 4 5 6 7 8 9 10 11 12
<!DOCTYPE HTMLPUBLIC"-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <metahttp-equiv="content-type"content="text/html; charset=utf-8"> <title> exec iframe function </title> </head> <body> <scripttype="text/javascript"> parent.window.myframe.fIframe(); // execute parent myframe fIframe function </script> </body> </html>