一些网址没有在iframe中打开

时间:2015-03-21 07:33:03

标签: javascript jquery iframe

所以问题很简单,但我无法找到解决方案。我正在创建一个投资组合插件,并尝试在iframe中打开项目以显示响应式布局,但问题是当我在iframe中点击这些网址时,一些网址没有在iframe中打开。这是JS fiddle

<a href="https://www.searchforenergy.com" target="myIframe">iframe2</a>
    <iframe src="" name = "myIframe"></iframe>

我想用jquery查看是否可以在iframe中打开然后确定,否则链接将在新标签中打开。

3 个答案:

答案 0 :(得分:0)

问题是由same origin policy引起的。您可以采取的措施是在响应中添加标题,以允许跨源资源共享。

在apache中,您可以通过在httpd.conf或任何.htaccess个文件中添加以下行来执行此操作

 Header set Access-Control-Allow-Origin "*"

Source

答案 1 :(得分:0)

此问题是由于跨源请求被阻止:同源策略禁止在https://www.searchforenergy.com/读取远程资源。这可以通过将资源移动到同一域或启用CORS来解决。

X-Frame-Options拒绝加载:https://www.searchforenergy.com/不允许跨源框架。

您可以使用jquery ajax错误来检查是否可以使用javascript访问网址

$.ajax({

    url: "https://www.searchforenergy.com",
    dataType:'html',
    success: callback = function(data, textStatus, xhr)
    {
        console.log(data)
    },
    error: callback = function(data, textStatus, xhr)
    {
        console.log(data)
    }
});

答案 2 :(得分:0)

阅读charlietfl评论后的新解决方案

HTML

<a id="btn" href="#">iframe2</a>
<iframe src="" id = "myIframe" onload="loadFrame(this)"></iframe>

的Javascript

function loadFrame(frame) {
    if (!frame.contentDocument) {
        // code to open in tab
    }
}
$(document).ready(function(){
    $('#btn').click(function(){
        $('#myIframe').attr('src', 'https://www.searchforenergy.com')
    });
});