Gru*_*ica 3 html javascript iframe jquery
我有一个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>
Run Code Online (Sandbox Code Playgroud)
注意:src由页面加载时的javascript设置.
在那之下我有:
<script>
var hyperLink = document.getElementById("iframe").src;
function refreshLink(link) {
hyperLink = link;
document.getElementById("button").href=hyperLink;
}
</script>
Run Code Online (Sandbox Code Playgroud)
最重要的是我:
<a href="#" target="_blank" class="btn btn-info" id="button">Open in R1</a>
Run Code Online (Sandbox Code Playgroud)
但是,当我在任何给定时间单击该按钮时,它会打开一个新选项卡到我之前所在的同一个URL(一个选项卡转到显示iframe的同一页面).
我相信这应该是可能的
对于显示相同域内容的iframe,您可以使用以下内容获取当前网站网址:
document.getElementById("myframeID").contentWindow.location.href
Run Code Online (Sandbox Code Playgroud)
但是对于跨域iframe,当您尝试以相同的方式获取网站上的位置时,您将收到以下错误:
VM2536:2 Uncaught DOMException: Blocked a frame with origin "https://example.com" from accessing a cross-origin frame.
Run Code Online (Sandbox Code Playgroud)
但是,这似乎可以从跨域iframe中获取正确的URL
document.getElementById('myframeID').src
Run Code Online (Sandbox Code Playgroud)
为了完成你可以做这样的事情(假设你的标签使用jQuery):
$('body').on('click','#button', function(){
var url = document.getElementById('myframeID').src;
var tabOrWindow = window.open(url, '_blank');
tabOrWindow.focus();
});
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
12469 次 |
最近记录: |