如何在iframe中使用target =“_ blank”打开iframe中的链接?

时间:2012-02-05 13:26:53

标签: php javascript iframe

我想在同一个iframe中打开带有target =“_ blank”和iframe的链接。 我尝试了下面的代码,但它没有用。欢迎Php解决方案!

<script src="http://jqueryjs.googlecode.com/files/jquery-1.3.2.min.js" type="text/javascript"></script>


<iframe src="http://www.htmlcodetutorial.com/linking/_A_TARGET_95y98y108y97y110y107y.html" height="100%" width="100%" ></iframe>

<script>
$('iframe a[target="_blank"]').live('click',function(e){
e.preventDefault(); //stops it opening in a new window
var url = $(this).attr('href');
$('iframe').load(url);
});

</script> 

1 个答案:

答案 0 :(得分:3)

您是否尝试过更改目标属性?

$('iframe a[target="_blank"]').each(function () {
    $(this).attr('target', '_self');
});

此外,Zain Shaikh非常正确。如果iframe的来源是从其他域加载的,您将无法通过JavaScript执行此操作。

您仍然可以在服务器端执行此操作,但这取决于您使用的语言。

就本机JavaScript解决方案而言:

function replaceWithSelf () {
    var iframes = document.getElementsByTagName('iframe');
    var i = 0;
    var j = 0;
    var anchors;
    for (i = 0; i < iframes.length; i += 1) {
        anchors = iframes[i].getElementsByTagName('a');
        for (j = 0; j < anchors.length; j += 1) {
            if (anchors[j].getAttribute('target') === '_blank') {
                anchors[j].setAttribute('target', '_self');
            }
        }
    }
}

我在http://www.htmlcodetutorial.com/linking/_A_TARGET_95y98y108y97y110y107y.html测试了相关部分(如您的问题中所述)。使用的测试代码是:

var anchors = document.getElementsByTagName('a');
for (var j = 0; j < anchors.length; j += 1) {
    if (anchors[j].getAttribute('target') === '_blank') {
        anchors[j].setAttribute('target', '_self');
    }
}

我在控制台(Google Chrome)中运行。代码按预期工作。

要重新迭代,如果iframe的来源是从其他域加载的,那么您将无法通过JavaScript执行此操作。

换句话说,除非您运行代码的域名也是http://www.htmlcodetutorial.com,否则您将无法在JavaScript中执行此操作。