我有一个棘手的问题。
所有页面都位于同一服务器/门户网站内。
我有一个页面使用以下代码嵌入来自其他页面的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内容重置为默认值,没有新内容。
有谁知道如何解决这个问题?
谢谢大家!
答案 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();
});
});
});
}
希望这会有所帮助:)