在新标签

时间:2016-05-03 16:45:16

标签: javascript jquery html iframe

我有一个iframe,人们可以通过它来到达一个特定的地方,但由于它是跨域的,网站上的某些javascript无法正常工作(例如查看产品历史记录)例如......)

我一直试图找到一种方法来创建一个按钮,该按钮将占用用户在iframe中的任何页面,并在新标签中打开该链接。

在尝试研究是否可行时,我所能找到的是人们在新标签中打开iframe中的链接,这是我需要的。

我需要创建一个按钮,onclick将打开一个新标签,其中包含用户当前在iframe中的任何链接。

我还没有真正尝试过很多东西,因为我找不到任何关于这个主题的东西(可能是由于可怕的措辞),但我认为我最好的机会是jquery / javascript,但是,我'我的javascript不是很流利。

所以我的问题是,是否可以在新标签页中打开iframe网址,如果是这样,最有效的方式是什么?

我的iframe中的网站是跨域的,我无法编辑其来源。

我现在拥有的是:

<iframe id="iframe" class="frame" name="iframe" height="100%" width="100%" onload="refreshLink(this.contentWindow.location.href)"></iframe>

注意:src由页面加载时的javascript设置。

在那之下我有:

                                <script>
                                var hyperLink = document.getElementById("iframe").src;

                                function refreshLink(link) {
                                    hyperLink = link;
                                    document.getElementById("button").href=hyperLink;
                                }
                                </script>

最重要的是:

<a href="#" target="_blank" class="btn btn-info" id="button">Open in R1</a>

但是,当我在任何给定时间单击该按钮时,它会打开一个新选项卡到我之前所在的同一个网址(显示在iframe上的同一页面的选项卡)。

2 个答案:

答案 0 :(得分:5)

我相信这应该是可能的

对于显示相同域内容的iframe,您可以使用以下内容获取当前网站网址:

document.getElementById("myframeID").contentWindow.location.href

但是对于跨域iframe,当您尝试以相同的方式获取网站上的位置时,您会收到以下错误:

VM2536:2 Uncaught DOMException: Blocked a frame with origin "https://example.com" from accessing a cross-origin frame.

然而,这似乎可以从跨域iframe获取正确的URL

document.getElementById('myframeID').src

要完成,你可以做这样的事情(假设你的标签使用jQuery):

$('body').on('click','#button', function(){
   var url = document.getElementById('myframeID').src;
   var tabOrWindow = window.open(url, '_blank');
   tabOrWindow.focus();
 });

答案 1 :(得分:2)

这是一个首发。使用这样的标记:

<iframe id="myIframe" src="http://yourwebsite.com"></iframe>
<a href="#" target="_blank" id="button">Click here</a>

从一些JS开始,将锚点href更改为src的{​​{1}}:

iframe

var hyperLink = document.getElementById("myIframe").src; document.getElementById("button").href=hyperLink; 添加onload属性:

iframe

<iframe id="myIframe" src="http://yourwebsite.com" onload="refreshLink(this.contentWindow.location.href)"> </iframe> 获取用户导航的iframe的当前网址,并将其作为函数onload="refreshLink(this.contentWindow.location.href)"的参数发送。

然后我们可以声明该函数,完整的JS代码如下所示:

refreshLink

这是有效的,但它取决于每个网站有关iframe和http / https的任何政策。