从父级JavaScript访问跨域IFrame的DOM属性

16 浏览
0 Comments

从父级JavaScript访问跨域IFrame的DOM属性

已经有一些类似的问题,但它们倾向于涵盖子父关系。与此不同的是,我想要能够获取一些IFrame的DOM属性。我并不想操纵任何东西,我只是想能够读取属性或DOM节点。比如说属性或内容。据我所知,除非我使用像window.postMessage这样的东西,否则这是不可能的。尽管这个解决方案是合理的,但它是基于事件监听器的。这需要在IFrame中定义一个监听器,这意味着要改变IFrame的代码。我想避免这样做。如果你想进行跨域Ajax调用,你可以(如果你有权限)设置目标服务器的头部来允许这样做:Access-Control-Allow-Headers:X-Requested-With Access-Control-Allow-Methods:POST,GET,DELETE,PUT,OPTIONS Access-Control-Allow-Origin:*有趣的是,这对于与IFrame的通信并不起作用。所以我的问题仍然存在:(如何)访问跨域IFrame的DOM属性?

0
0 Comments

跨域IFrame DOM属性从父级JavaScript访问的问题出现的原因是浏览器的同源策略。同源策略是一种安全机制,它限制了一个文档或脚本如何与不同源的资源进行交互。这意味着通过IFrame加载的来自不同域的内容,无法直接从父级JavaScript访问其DOM属性。

然而,有一些解决方法可以解决这个问题。其中一个解决方法是使用EasyXDM库。EasyXDM是一个用于在跨域环境中进行通信的JavaScript库。它提供了一种易于使用的方法,允许父级页面的JavaScript与IFrame中加载的跨域内容进行交互。

使用EasyXDM的步骤如下:

1. 在父级页面中引入EasyXDM库文件。


2. 在父级页面的JavaScript中创建一个EasyXDM通信通道。

var channel = new easyXDM.Rpc({
  remote: "http://example.com/iframe.html"
});

3. 在IFrame中加载的页面中引入EasyXDM库文件。


4. 在IFrame中加载的页面的JavaScript中创建一个EasyXDM通信通道。

var channel = new easyXDM.Rpc({
  remote: "http://example.com/parent.html"
});

通过这种方式,父级页面的JavaScript可以使用EasyXDM通道与IFrame中加载的跨域内容进行通信,包括访问其DOM属性。

总之,使用EasyXDM库是一种解决跨域IFrame DOM属性从父级JavaScript访问的问题的有效方法。它提供了一种简单易用的方式,在跨域环境中实现安全的通信。

0
0 Comments

在编写JavaScript时,有时会遇到跨域的问题。跨域问题是指在一个域名下的JavaScript无法访问另一个域名下的资源。这是由于浏览器的同源策略所导致的。

同源策略是浏览器的一种安全机制,它限制了不同域名之间的交互。同源策略要求两个页面具有相同的协议、主机和端口,才允许它们之间的交互。

然而,在某些情况下,我们可能需要在一个域名下的JavaScript中访问另一个域名下的DOM属性。例如,当我们使用iframe将一个页面嵌入到另一个页面中时,我们希望能够从父页面的JavaScript中访问嵌入页面的DOM属性。

解决这个问题的方法有很多种。下面是一些解决跨域访问的方法:

1. 使用代理:可以在服务器端设置一个代理,将请求发送到目标域,并将响应返回给客户端。这样,客户端的JavaScript就可以通过代理访问跨域的资源。

2. 使用JSONP:JSONP是一种通过动态创建