如何防止 iframe 中的链接在新选项卡中打开

2024-05-17

我为我制作的基于网络的操作系统制作了一个基于网络的小型网络浏览器。我注意到在某些网站中,它们有喜欢在新选项卡中打开的链接。有没有办法可以防止这种情况并在 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/ 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内容 https://stackoverflow.com/questions/6170925/get-dom-content-of-cross-domain-iframe

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何防止 iframe 中的链接在新选项卡中打开 的相关文章

随机推荐

  • 如何在EditText中显示格式化文本?

    现在我正在编写简单的笔记应用程序 我需要在 EditText 中显示格式化的单独选定文本 I tried EditText et EditText findViewById R id edittext String string int s
  • 如何在 Bitbucket-Pipelines 中保存工件

    我是竹子新手 我尝试做的就是收集所有 dacpac在构建过程中创建的文件 image microsoft dotnet latest pipelines default step script Modify the commands bel
  • org.hibernate.MappingException:实体映射中序列的增量大小设置为 [10],而 ... 大小为 [1]

    更新到 Spring Boot 2 2 和相关的 Hibernate 5 4 x 时我们遇到了问题 我们确实有以下序列生成器 Id GeneratedValue strategy GenerationType SEQUENCE genera
  • WKWebView 未打开自定义 URL 方案(js 在新窗口中打开自定义方案链接)

    我有一个WKWebView在我的应用程序中 我不使用UIWeb视图 因为由于某种奇怪的原因 它无法正确打开包含大量 JS 代码的网页 当我点击链接时自定义 url 方案 scm 它确实nothing My code void viewDid
  • 异步回调在哪个线程上运行?

    我正在做几个HttpWebRequest BeginGetResponse调用 并在回调方法中BeginGetResponse 我正在调用一个事件处理程序 在EventHandler中 有测试下载是否成功的逻辑 如果没有 它会尝试重新下载
  • 使用 www 和裸域来指向我的 heroku 应用程序

    我无法将 www domain org 和 domain org 设置为指向 Heroku Rails 应用程序 我做了从 www 到 www example org herokudns com 的 CNAME 它工作正常 我的 www e
  • 从 NavigationController 中删除 ViewController 后 AVPlayer 继续播放

    因此 我在项目中使用 ARC 当我添加 AVPlayerLayer 时 它工作得很好 但当我从 UINavigationItem 中弹出 UIViewController 时 视频继续在后台播放 有谁知道你会如何处理这个问题 这似乎是一件很
  • 使用 ggplot 构面时增加闪亮的绘图大小

    有没有办法增加绘图窗口的大小shiny取决于在一个中使用的面的数量ggplot图 也许使用垂直滚动 例如 使用下面的示例 当输入为 A 有三个方面 情节看起来不错 当选项 B 选择绘图数量会增加 但绘图窗口保持相同大小 导致绘图太小 是否有
  • 带有 CUDA 的 Tensorflow:导入错误

    我已经按照 NVIDIA 教程中的说明一步步安装了 TensorFlow Ubuntu 16 04 桌面版 GTX 970 http www nvidia com object gpu accelerated applications te
  • Git:发送电子邮件而不提交

    我有一个项目 我做了更改 并想使用 git send email 功能将它们发送给另一个用户 我发现它可以通过发送补丁来工作 由git format patch每次提交 是否可以只发送diff的 我不想先提交 然后发送补丁 是否有gitfo
  • HTML5 视频:使用 Blob URL 流式传输视频

    我有一个 Blob 数组 实际上是二进制数据 我可以表达它 但是效率最高 我现在正在使用 Blob 但也许Uint8Array或者有什么会更好 每个 Blob 包含 1 秒的音频 视频数据 每秒都会生成一个新的 Blob 并将其附加到我的数
  • 在 C# 中选择动态创建的列表框项目

    我动态创建了一个Listbox并用一些项目填充它 在输入一个点后Textbox我想展示Listbox以便用户可以使用箭头键选择任何项目 到目前为止我已经做了所有事情 当用户在其中输入一个点时Textbox The Listbox显示 但方向
  • 获取 System.Drawing.Font 宽度?

    我正在使用 Net 工具进行一些 2D 绘图 System Drawing Font uses a GetHeight 返回以像素为单位的高度 我缺少一个GetWidth 检索宽度 我应该用什么 Use Graphics MeasureSt
  • 如何在MAMP中设置环境变量?

    如何在 MAMP 版本 3 3 中设置环境变量 我可以在我的 PHP 应用程序中使用它 我已经更新了 Applications MAMP Library bin envvars and envvars std file并添加以下行 Lice
  • 找不到模块“Yesod”

    我有以下代码 LANGUAGE TypeFamilies QuasiQuotes MultiParamTypeClasses TemplateHaskell OverloadedStrings module Simple where imp
  • 汇总表中各列的字符值比例

    在这种数据框中 df lt data frame w1 c A A B C A w2 c C A A C C w3 c C A B C B 我需要计算所有列中字符值的列内比例 有趣的是 以下代码适用于大型实际数据集 但对上述玩具数据会引发错
  • 通过特定分隔符删除字符串

    我的文件中有几列 其中第二列有 分隔符 我想删除第二列中的第一个 第三个和第四个字符串 并将第二个字符串留在该列中 但我有正常的分隔符空间 所以我不知道 input 22 16050075 A G 16050075 A G 22 16050
  • Cassandra Read 花费的时间比预期要长

    我正在使用带有 CQL3 的 cassandra 1 2 我的键空间中有三个列族 当我查询其中一个列族 电话 时 需要很长时间才能检索 这是我的查询 select from phones where phone no in 90384875
  • 将 int 复制到 byte[] 的最简单方法

    我有一个 byte 我正在迭代 int 列表 和其他数据 我想将 int 复制到我的 byteArray index 4 我该怎么做 BitConverter http msdn microsoft com en us library sy
  • 如何防止 iframe 中的链接在新选项卡中打开

    我为我制作的基于网络的操作系统制作了一个基于网络的小型网络浏览器 我注意到在某些网站中 它们有喜欢在新选项卡中打开的链接 有没有办法可以防止这种情况并在 iframe 中打开链接 这是我的整个浏览器的代码 以防万一