如何防止iframe中的链接在新选项卡中打开
How to prevent links in iframe from opening in new tab
我为自己制作的基于web的操作系统制作了一个基于web的小浏览器。我注意到,在一些网站上,他们有喜欢在新标签页中打开的链接。有没有一种方法可以防止这种情况,并在iframe中打开链接?
这是我为整个浏览器编写的代码,以防万一:
<html>
<head>
<link href="./browser.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="http://code.jquery.com/jquery-1.7.1.min.js"></script>
<script>
$(function() {
$("#load").click(function() {
var new_url = $("#url").val();
// Checks that the user typed "http://" or not
if(new_url.substr(0,7)!="http://")
new_url = "http://"+new_url;
$("#main_frame").attr("src", new_url);
});
});
</script>
</head>
<body>
<div id="help">
<form action="help.html"><input type="submit" value="Help"></form>
</div>
Address:
<div id="logo">
<img src="stallion.png">
</div>
<input type="text" style="width: 400px;" name="url" id="url">
<input type="button" value="Go" id="load">
<div>
<input type="image" src="back.png" height=25 width=25 onclick="back()">
<input type="image" src="forward.png" height=25 width=25 onclick="forward()">
<input type="image" src="refresh.png" height=26 width=26 onclick="refresh()">
</div>
<iframe frameborder=0 class="netframe" src="http://www.bing.com/" id="main_frame"></iframe>
</body>
<script>
function back()
{
window.history.back();
}
</script>
<script>
function forward()
{
window.history.forward();
}
</script>
<script>
function refresh()
{
var iframe = document.getElementById('main_frame');
iframe.src = iframe.src;
}
</script>
</html>
有两种选择
1:您可以在每次更改时检查iframe中的所有html,并查找"target=_blank"
,如果是,则替换为"target=_self"
2:我认为更好的方法是,当用户单击锚标记检查锚是否具有属性"target=_blank"
时,只需删除它,然后单击链接。
我在下面提供了一个jsFiddle
https://jsfiddle.net/L5dhp80e/
Html
<a class="newTab" href="http://www.google.com" target="_blank">
New Tab Google
</a>
<br />
<a class="removeBlank" href="http://www.google.com" target="_blank">
Removed Target Blank Google
</a>
Javascript
$(function () {
$('a.removeBlank').on('click', function () {
if ($(this).attr('target') == "_blank") {
$(this).attr('target', '_self');
}
$(this).click();
return false;
})
});
但是,如果iframe内容是跨域的,我认为您根本无法编辑任何代码。
获取跨域iframe 的DOM内容
我在网上找到了这个答案:
window.open = function (url, name, features, replace) {
document.getElementById('#iframe').src = url;
}
或者使用jQuery:
window.open = function (url, name, features, replace) {
$('#iframe').attr('src', url);
}
我还没有测试过,但我希望它能起作用。
添加target="_self"
<iframe src="http://google.com" target="_self"></iframe>
目标属性为:
_self=在单击的同一框架中打开链接文档(这是默认设置)
_blank=在新窗口或选项卡中打开链接的文档
_parent=在父框架中打开链接的文档
_top=在窗口的全文中打开链接的文档
framename=在命名框架中打开链接文档
信息来源:
http://www.w3schools.com/tags/att_a_target.asp
相关文章:
- 通过js在新选项卡中有条件地打开url
- 新选项卡被弹出窗口阻止程序阻止
- 在新选项卡中打开链接,但不使用_blank方法
- 单击按钮即可在浏览器的新选项卡中打开 Sapui5 详细信息页面
- 在同一选项卡中启动下载,而无需在Javascript中打开新选项卡或窗口
- Javascript事件;在新选项卡中打开”;
- jQuery-尝试附加每个要选择的新选项
- 使用Javascript从Drupal打开新选项卡
- 如何在新选项卡中而不是在新窗口中打开URL
- 如何禁用鼠标中键单击超链接以在新选项卡或新窗口中打开
- 如何在新选项卡中打开链接以及在当前选项卡中重定向
- 如何超链接在新选项卡中打开并携带一些变量的选择标记
- 在新选项卡中打开iframe源
- 如何防止iframe中的链接在新选项卡中打开
- 单击我网站中的链接时打开新选项卡,保持当前选项卡处于活动状态
- 打开除域之外在新选项卡中打开的所有外部链接
- 如何使用jQuery更改当前URL并在单击时打开新选项卡
- 强制 window.open() 在 chrome 中创建新选项卡
- 如何在火狐扩展的新选项卡中打开网址
- 如何在新选项卡中打开新网页后获取书签中的 JavaScript 代码以执行