在iframe javascript中使用跨域获取iframe属性

时间:2014-09-29 07:42:38

标签: javascript jquery html angularjs

如何在iframe javascript代码中获取iframe属性

<div>
<iframe src="http://192.168.0.108:8092/"
            name="otherDomain"
            width="100%"
            height="600px"
            style="border: 0;"
            data-auth-token="xyz"
            data-auth-key="abc"
      >
</div>

我正在尝试

console.log(window.frameElement.getAttribute('data-auth-token')) 

如果iframe网址和浏览器用户相同,我可以获得iframe属性。如果网址不同,我会收到以下错误。

Uncaught SecurityError: Failed to read the 'frame' property from 'Window': Blocked a frame with origin "http://192.168.0.108:8092" from accessing a frame with origin "http://localhost:8092". Protocols, domains, and ports must match. 

是否可以在JavaScript中获取跨域iframe属性。

2 个答案:

答案 0 :(得分:2)

不幸的是,您无法使用引用其他域名的iframe。浏览器会自动阻止尝试从另一个域访问该帧的所有脚本。如果这样的事情成为可能,那么这将是一个巨大的安全漏洞。

在您的情况下,您可以将iframe属性src设置为localhost:8092,这样您就可以拥有iframe相同的位置(并且相同)域名),您将能够访问其数据。

答案 1 :(得分:0)

您不能从iframe内部访问属性,但可以访问查询字符串。

例如:

在父HTML中:<iframe src="/x?a=1"></iframe>

在iframe JavaScript中:window.location.search