页面a.html域名为www.a.com嵌入页面http://www.b.com/b.html,b.html要调用a.html中的js函数,由于两个页面不在一个域中,会提示没权限。如何解决该问题呢,请看下面示例代码。
a.html内容:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>A</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<script type="text/javascript">
function test(){
alert(123);
}
</script>
</head>
<body>
主页面 <br>
<iframe src="http://www.b.com/b.html" width="300" height="300"></iframe>
</body>
</html>
b.html内容:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>B</title>
<script type="text/javascript">
function t(){
var iframeTag = document.getElementById('frameC');
iframeTag.src = 'http://www.a.html/c.html?time='+new Date();
};
</script>
</head>
<body>
被嵌入页面,与主页面不在同一域名下。
<button onclick="t();">Test</button>
<iframe id="frameC" style="display: none;"></iframe>
</body>
</html>
c.html内容(c.html与a.html在同一个域下):
<script type="text/javascript">
top.test();
</script>
通过代码可以很明显的看出,c.html起着关键作用,在两个域之间做为中转站。通过此方法,可以轻松解决iframe下跨域调用js函数的问题。
http://www.jiguu.com/showArticle.action?kindid=f5a9793032dda73b0132e3da96ed0016&id=f5a97930340f7d1d0134179d7e700004
分享到:
相关推荐
"解决JS跨域访问IFrame的解决方案"这一主题关注的就是如何克服这个限制,使得在JSP页面中嵌入的跨域IFrame能够正常通信。下面我们将详细探讨这个问题以及可能的解决方案。 首先,理解同源策略是关键。同源策略是...
在Web开发中,"跨域调用"是一个关键的话题,特别是在使用JavaScript进行AJAX操作时。由于浏览器的同源策略(Same-Origin Policy),一个域下的文档或脚本不能请求另一个域下的资源,除非这两个域完全相同。这限制了...
5. **`Window.proxy`**:在`iframe`的源页面中定义一个全局函数,如`window.proxy = function(data) {...}`,然后在父页面中通过`iframe.contentWindow.proxy`调用这个函数,实现数据传递。 6. **`Window.post...
### iframe跨域通信解决方法 在现代Web开发中,跨域问题经常出现并困扰着开发者。尤其是在使用`iframe`嵌入不同源的内容时,主页面往往无法直接与`iframe`内的内容进行交互,这就需要一种解决方案来实现跨文档消息...
4. **IFrame跨域通信**:利用`window.postMessage`方法,可以在属于不同源的两个IFrame之间进行通信。这种方法适用于页面嵌套场景,但不适用于跨域API调用。 5. **WebSocket跨域**:WebSocket协议本身支持跨域,...
本示例“iframe跨域互相调用资源”提供了一个解决方案,它着重展示了如何通过`iframe`实现在不同源之间进行通信,并且处理了浏览器兼容性问题,特别是对较老版本的IE浏览器(至少支持到IE8)的支持。 首先,`iframe...
为了解决iframe跨域访问的问题,Web开发中引入了几种解决方案: 1. **CORS(Cross-Origin Resource Sharing)**:这是一种服务器端的方法,允许特定的资源被其他域的页面访问。通过设置HTTP响应头`Access-Control-...
标题“同级iframe间的函数调用”涉及的是如何在不同`iframe`之间共享数据和交互,这是跨域安全策略下实现页面间通信的一种方式。 在同一个域名下,`iframe`可以相互访问,这是因为它们被视为同一源(same-origin ...
iframe(Inline Frame)是HTML中的一个元素,用于在当前文档中嵌入另一个HTML文档。在很多场景下,它被用来实现页面的部分刷新或者加载外部资源,例如在当前页面中嵌入一个登录窗口、广告等。然而,由于浏览器的安全...
总结,`iframe`中的JavaScript交互涉及到页面间的通信,无论是父页面调用子页面还是子页面调用父页面,都需要理解`window`对象、同源策略以及跨域通信机制。正确使用这些技术,可以在多页面应用中实现更复杂的功能...
JavaScript调用IFrame框架页面中函数的方法是一种常见...同时,确保在调用函数之前,IFrame中的内容已完全加载,以防止因内容未加载完成而引发的错误。在实际应用中,还需要考虑安全问题,防止跨域访问带来的潜在风险。
然而,当`iframe`中的内容来源于不同的源(即跨域)时,会受到浏览器同源策略的限制,这时就需要特殊的处理来解决跨域问题。同时,`iframe`内容的动态加载可能使得其高度不固定,如果不能自适应高度,可能会导致页面...
在`iframe`子页面中,要调用父页面的JavaScript函数,可以使用`window.parent`对象来引用父窗口。假设父页面有一个名为`a()`的函数,子页面可以这样调用它: ```javascript window.parent.a(); ``` 如果需要获取父...
在JavaScript中,调用iframe框架页面中的函数是跨文档通信的一种常见方式,特别是在网页嵌套或者需要在不同页面间共享数据和功能时。本篇将详细介绍如何实现这一操作,并给出具体的示例代码。 首先,我们需要了解...
需要注意的是,虽然技术上可以解决跨域调用问题,但这种做法可能带来安全风险,因此必须谨慎使用,并确保了解所有相关的安全考虑。 总之,通过上述的几种方法,可以在满足一定条件的情况下,在JavaScript中实现...
例如,如果父页面定义了一个名为"getHelloWorld"的函数和一个名为"hello"的变量,那么在iframe中可以通过以下方式调用: ```javascript parent.getHelloWorld(); // 调用父页面的方法 alert(parent.hello); // 弹出...
在JavaScript中,实现iframe跨页面调用函数是一个常见的需求,特别是在构建复杂的Web应用程序时。当一个页面(父页面)嵌入了另一个页面(子页面)作为iframe时,有时需要在两个页面之间通信,调用各自的功能。下面...
4. **服务器响应**:服务器接收到请求后,会将数据包装在一个JavaScript函数调用中返回,函数名正是客户端传入的回调函数名。例如,服务器可能返回`jsonp32440980({"key": "value"})`这样的响应。 5. **执行回调...
【AJAX跨域解决办法】 在Web开发中,AJAX(Asynchronous JavaScript and XML)是一种在无需刷新整个页面的情况下更新部分网页的技术。然而,由于浏览器的同源策略限制,AJAX请求通常只能发送到与当前页面同一源的...
这两个页面中可能包含了JavaScript代码,用于初始化iframe,设置通信接口,并调用`FrameMessage.js`和`json2.js`这两个JavaScript库。 `FrameMessage.js`可能是JavaScript实现的通信接口,它可能使用了`window.post...