当前位置: 首页 > news >正文

有的网站是通过js控制页面新打开一个tab页的,但是我想通过注入js脚本修改为在当前页面打开

如果网站通过 JavaScript 控制在新标签页中打开页面(例如使用 window.open()),你可以通过注入脚本来修改其行为,使其在当前页面打开。

解决方案

你可以通过覆盖 window.open 函数来强制将所有新页面在当前窗口中打开。以下是一个基本的示例代码,它通过替换 window.open 函数,确保所有的页面都在当前页面加载,而不是新标签页。

1. 注入脚本覆盖 window.open

document.addEventListener("DOMContentLoaded", () => {// 保存原始的 window.open 函数const originalWindowOpen = window.open;// 重写 window.open,强制其在当前页面打开window.open = function (url, target, features) {// 将 target 替换为 '_self'(当前页面)return originalWindowOpen.call(window, url, '_self', features);};console.log('window.open has been overridden to open in the current page.');
});

2. 说明

  • 覆盖 window.open:通过重写 window.open,你可以强制所有调用 window.open 的地方都在当前页面中打开,而不是新标签页。只需将 target 参数强制设置为 _self
  • 注入脚本:通过在 Tauri 中注入这个脚本,你可以在页面加载完成后执行此修改,确保后续调用的 window.open 都在当前页面打开。
  • 兼容性:这种方法适用于大多数 JavaScript 使用 window.open 打开新页面的场景。

通过这种方式,你就能够控制页面如何响应 JavaScript 中的 window.open 调用,确保所有的页面都在当前标签页中加载。

如果想让所有的网站都通过在当前网页打开新的链接,就可以注入下面的脚本:

document.addEventListener('DOMContentLoaded', () => {// 获取页面的 HTML 内容let htmlContent = document.documentElement.innerHTML// 使用正则表达式替换所有 target="_blank" 为 target="_self"htmlContent = htmlContent.replace(/target="_blank"/g, 'target="_self"')// 将修改后的内容重新设置到页面document.documentElement.innerHTML = htmlContentconsole.log('All target="_blank" attributes have been replaced with target="_self".')
})document.addEventListener('DOMContentLoaded', () => {// 保存原始的 window.open 函数const originalWindowOpen = window.open// 重写 window.open,强制其在当前页面打开window.open = function (url, target, features) {// 将 target 替换为 '_self'(当前页面)return originalWindowOpen.call(window, url, '_self', features)}console.log('window.open has been overridden to open in the current page.')
})


http://www.mrgr.cn/news/67660.html

相关文章:

  • 天气雷达PPI图绘制之python中cinrad库离线安装应用
  • 在 Mac 和 Windows 系统中快速部署 OceanBase
  • Pycharm,2024最新专业版下载安装配置详细教程!
  • 总结关于Validated的使用方法
  • Flutter鸿蒙next 中的 Drawer 导航栏
  • 【5.8】指针算法-双指针验证回文串
  • C++关键字:mutable
  • 立冬到了,选择Codigger暖心陪伴
  • ElasticSearch:使用dsl语句同时查询出最近2小时、最近1天、最近7天、最近30天的数量
  • glibc 内存分配与释放机制详解
  • 前端关闭控制台打印信息
  • 25源码编译安装软件
  • Android 开发 Java中 list实现 按照时间格式 yyyy-MM-dd HH:mm 顺序
  • 导游职业资格考试真题题库
  • 给应用添加通知和提醒 习题答案 <HarmonyOS第一课>>
  • 基于微信小程序实现个人健康管理系统
  • LVGL UI设计神器助你高效开发嵌入式UI应用——v0.17.0发布(中)
  • Java后台生成指定路径下创建指定名称的文件
  • 为什么说距离视图(RV)表示的紧凑性
  • uniapp radio单选
  • 鸿蒙应用App测试-通用测试
  • 【c知道】Hadoop工作原理。
  • 走进 Go 语言基础语法
  • SAP固定资产报废BAPI_ASSET_RETIREMENT_POST的主要参数说明<转载>
  • 电能管理系统(源码+文档+部署+讲解)
  • 6项!国自然基金委员会拟批准资助项目名单公布!