jquery iframe链接到新的div / tab / window?

时间:2014-12-05 16:35:17

标签: javascript jquery html css iframe

我有一个棘手的问题。

所有页面都位于同一服务器/门户网站内。

我有一个页面使用以下代码嵌入来自其他页面的iframe:

$('#mydiv').append('<p id="loading">Loading ...</p>');
$('#mydiv').append('<iframe id="myframe" name="myframe" class="myframe" onload="myframe()" style="display:none;"></iframe>');
$('#myframe').attr('src', 'https://mywebsite.com/page2');

function myframe() {
var $myframesearch =  $('#myframe').contents(); 
$myframesearch.find("a").attr('target','_parent');
}

$('#myframe').load(function(){
$('#loading').remove(); 
$('#myframe').fadeIn();
});

iframe中的所有链接都没有href(但是href =“javascript:void(0)”),并使用iframe中的脚本动态处理动作。

某些链接在新窗口中打开但有些链接没有。

我想强制所有链接在新的Tab,Window中打开,或者附加到新的Div,但是没有一个方法可以工作,比如base / parent,onclick / new window,_top,_parent等。

但是,我的想法是隐藏并等待,直到点击后加载iframe的内容,然后将加载的内容附加到新的隐藏div中,然后将其淡入。当这样做时,加载的iframe内容重置为默认值,没有新内容。

有谁知道如何解决这个问题?

谢谢大家!

1 个答案:

答案 0 :(得分:0)

所以我检查一下,似乎其他JavaScript用标签中的某些“数据”字段覆盖了“a”标签操作,仅用于链接中包含“Open:”的“a”标签。

我通过绕过JavaScript覆盖的另一个页面中此“a”标记的链接找到了解决问题的方法:

$(function(){

$('#mydiv').append('<p id="loading">Loading ...</p>');
$('#mydiv').append('<iframe id="myframe" name="myframe" class="myframe" src="https://mywebsite.com/page2" onload="myframe()" style="display:none;"></iframe>');

$('#myframe').load(function(){ 
$('#loading').hide(); 
$('#myframe').fadeIn(); 
});

$('<div id="popup" style="display:none; width:1px; height:1px; position:absolute; top:0; left:0;"></div>').appendTo('html');

});

function myframe() {
var $myframesearch =  $('#myframe').contents(); 
$myframesearch.find("a").attr('target','_parent');
$myframesearch.find('a:contains("Open:")').on('click',function(){
$(this).attr('data','');
var $texta = $(this).text();
var $text = $texta.replace(/Open: /,"");

$('#popup').load('https://mywebsite.com/page2'  + ' a:contains("'+$text+'")', function(){
$('#popup a').each(function(){
this.href = this.href.replace(/https:\/\/mywebsite\.com\/page2\/a/, "https://mywebsite.com/page2");
 this.click();
});
});

});
}

希望这会有所帮助:)