当我尝试从包含另一个域 url 的 iframe 为父 url 设置哈希值时,出现以下错误:
不安全的 JavaScript 尝试从 URL“URL2”的框架访问 URL“URL1”的框架。域、协议和端口必须匹配。
我该如何解决这个问题?
当我尝试从包含另一个域 url 的 iframe 为父 url 设置哈希值时,出现以下错误:
不安全的 JavaScript 尝试从 URL“URL2”的框架访问 URL“URL1”的框架。域、协议和端口必须匹配。
我该如何解决这个问题?
不允许从不同来源的子文档访问顶部窗口的location.hash
属性,但可以设置location
属性本身。
这意味着,鉴于顶部窗口位置是http://example.com/page/
,而不是执行
parent.location.hash = "#foobar";
你确实需要知道父母的位置并且做
parent.location = "http://example.com/page/#foobar";
由于资源未导航,这将按预期工作,仅更改 url 的哈希部分。
如果您将其用于跨域通信,那么我建议您改用easyXDM。
当两个框架具有不同的域 -> 安全性时,跨框架脚本是不可能的。
看到这个:http : //javascript.about.com/od/reference/a/frame3.htm
现在回答您的问题:没有解决方案或变通方法,您只需检查您的网站设计为什么必须有来自不同域的两个框架来更改另一个的 url。
当我尝试更改 iframe.src 的域时,我收到了相同的错误消息。
对我来说,答案是将 iframe.src 更改为同一域上的 url,但这实际上是一个 html 重定向页面到所需域。然后另一个域出现在我的 iframe 中,没有任何错误。
像魅力一样工作。:)
解决方案可能是使用检索远程内容的本地文件
远程包含.php
<?php
$url = $_GET['url'];
$contents = file_get_contents($url);
echo $contents;
HTML
<iframe frameborder="1" id="frametest" src="/remoteInclude.php?url=REMOTE_URL_HERE"></iframe>
<script>
$("#frametest").load(function (){
var contents =$("#frametest").contents();
});
我发现使用 XFBML 版本的 Facebook 点赞按钮而不是 HTML5 版本解决了这个问题。在您希望按钮出现的位置添加以下代码:
<div id="fb-root"></div>
<script>(function (d, s, id) {
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) return;
js = d.createElement(s); js.id = id;
js.src = "//connect.facebook.net/en_GB/all.js#xfbml=1";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));</script>
<fb:like send="true" layout="button_count" width="50" show_faces="false" font="arial"></fb:like>
然后将其添加到您的 HTML 标签中:
xmlns:fb="http://ogp.me/ns/fb#"