是的,可以将某些单击的href发送到另一个BrowserWindow。在前端开发中,可以使用JavaScript来实现这个功能。具体步骤如下:
这样,当用户在原始窗口中单击某个链接时,会将该链接发送到主进程,主进程再打开一个新窗口加载该链接。
这种方式适用于需要在新窗口中打开某些特定链接的场景,比如在应用程序中打开外部链接或者打开应用程序内的某些特定功能页面。
腾讯云相关产品和产品介绍链接地址:
最重要的是,在从文件系统读取文件内容并将其发送到窗口之后,openFile()中引用了它。 ---- 主进程和多个窗口之间的通信 拥有多个窗口会引发一个问题:我们将文件路径和内容发送到那个窗口?...}; ---- 将对当前窗口的引用传递给主进程 从文件系统读取文件内容之后,我们将文件的路径和内容作为第一个参数传入并发送到窗口。...在实现上一章中的事件监听器之后单击new File按钮,您可能会对它是否正常工作感到困惑。...我们可以使用BrowserWindow.getFocusedWindow()获得对用户当前正在使用的窗口的引用。...我们可以用它来决定是否应该打开一个新窗口。
下一步是将HTML页面加载到我们创建的BrowserWindow实例中。...在Electron中编写应用程序的另一个好处是我们可以使用正在兴起的Fetch API来向远程服务器发出请求。...Promises是链式的,我们可以使用先前承诺的返回值,并将另一个调用附加到then。...我们可以使用对象。获取对象的所有键。我们必须为自己提供另一个帮助函数来将所有链接从localStorage中取出。这没什么大不了的,因为我们需要将它们从字符串转换回实际对象。...属性 |检查被单击的元素是否为链接 linksSection.addEventListener(
这些通道是任意的(您可以任意命名它们)和双向的(您可以为两个模块使用相同的通道名称)。...你通常使用这个模式从你的web内容中调用一个主进程API。我们将通过创建一个简单的应用程序来演示这种模式,该应用程序可以通过编程方式更改窗口的标题。...(webContents) win.setTitle(title) }) 每当消息通过set-title通道传入时,此函数将找到附加到消息发送者的BrowserWindow实例,...消息需要通过主进程的WebContents实例发送到渲染进程。这个WebContents实例包含一个sent方法,可以像ipcReender .send那样使用它。...要做到这一点,你可以使用主进程作为渲染程序之间的消息代理。这将涉及到从一个渲染器向主进程发送消息,主进程将把消息转发给另一个渲染器,这里就不做演示了。
我们正在创建的对话框的某些特性需要传递给dialog.showOpenDialog()配置的对象属性。...但是我们如何将文件的内容发送到渲染器进程呢?如何从UI中触发主进程中的getFileFromUser()函数? 在构建传统web应用程序时,我们必须处理类似的问题。...---- 将内容从主进程发送到渲染器进程 remote模块促进了渲染器进程访问主进程的能力,但是它不允许主进程访问渲染器进程。..."file-opened"通道将文件的名称及其内容发送到渲染器进程 }; 主进程现在通过打开的文件file-opened通道广播文件的名称及其内容。...我们可以使用webContents.send ()命令将消息从主进程发送到渲染器进程。 我们可以使用ipcRenderer模块监听主进程发送渲染器进程的消息。
在技术调研选型时,本身后端逻辑就是用的Java,所以自然也想用Java的窗体程序实现。 经调研发现使用JavaFx、Swing可以实现桌面应用程序开发,感觉都不太理想,为什么呢?...故事讲完了,开始干活了,具体需求如下: 点击按钮可以打开另一个界面 按钮及界面都需要颜值 如何实现 1、引入样式 安装bootstrap命令如下: npm install bootstrap --save...2、点击按钮可以打开另一个界面 在根目录下创建一个名为renderer的文件夹,并创建index.js,其作用就是向主进程发出通信,具体代码如下: const { ipcRenderer } = require.../add.js') 接着再来修改main.js代码,使用ipcMain来接收渲染进程发起的点击事件,示例代码如下: const { app, BrowserWindow...到此一个简单点击交互完成,感兴趣的同学可以自己动手去尝试。
对象事例,我们也可以直接进行消息通知: const { ipcMain, shell } = require('electron'); const win = new BrowserWindow({...('href') e.preventDefault() ipcRenderer.send('open-url', url) }) }) 当然这是一个异步的消息队列~ 可能在某些需求场景下...= new Tray(icon1) tray.setToolTip('Electron 系统托盘') tray.on('click', () => { console.log('托盘单击.../background.js里的 new BrowserWindow 添加配置项 const win = new BrowserWindow({ width: 800, height:...,注册完快捷键后发现 electron 占据了系统的原有快捷键,这才发现除了 electron 以外的其他应用,这些快捷键都失效了~ 后面仔细研究一番之后,通过判断应用是否激活状态,来进行相关快捷键的注册
HTML注入综合指南 **“ HTML”***被视为每个Web应用程序的***框架***,因为它定义了托管内容的结构和完整状态。*那么,你是否想过,是否用一些简单的脚本破坏了这种结构?...[图片] 基本HTML页面: 互联网上的每个网页都在某个地方或另一个HTML文件中。...使用GET方法,我们从特定来源**请求数据**,而POST方法用于**将数据发送到服务器**以创建/更新资源。...* 从下图可以看到,当我尝试在**name字段中**执行HTML代码时,它会以纯文本的形式将其放回: [图片] 那么,该漏洞是否已在此处修补?...* 单击“执行**”**按钮以检查其生成的**响应。** 从下图可以看到,我们已经成功地操纵了**响应。
(apiKey, apiObject) 此方法将指定的 apiObject 对象暴露给渲染进程中的全局对象,以便在渲染进程中直接访问。...(res); } 主进程向渲染进程通信(单向) 将消息从主进程发送到渲染进程时,需要指定是哪一个渲染进程接收消息。...消息需要通过该渲染进程的 WebContents 实例发送到渲染进程。 此 WebContents 实例包含一个 send 方法,其使用方式与 ipcRenderer.send 相同。...,不过可以将主进程作为渲染进程之间的消息代理。...这需要将消息从一个渲染进程发送到主进程,然后主进程将消息转发到另一个渲染进程。
-c,--conceal 将应用程序源代码打包到asar存档中;默认为false --counter (仅适用于macOS...-i,--icon 用作应用程序图标的图标文件(应为.png,macOS也可以是.icns) --width ...禁用窗口框架和控件 --verbose 启用详细/调试/故障排除日志 --disable-context-menu 禁用上下文菜单(右键单击...如果将“开始进纸”设置为参数,第一次启动时不显示主窗口 --basic-auth-username 基本的HTTP身份验证用户名 --basic-auth-password...> 将直接发送到电子文件中的JSON字符串BrowserWindow选项。
我们还利用了操作系统特有的特性,比如更新应用程序的标题栏,以显示当前打开的文件,以及自上次保存以来是否已经更改。...当BrowserWindow实例触发它的“ready-to-show”事件时,我们将调用它的show()方法,这将在UI完全准备好运行后使它不再隐藏。...此外,您还可以通过编程方式触发开发人员工具。 BrowserWindow实例上的webcontent属性有一个名为openDevTools()的方法。...要创建启动任务,请转到上面的终端选项卡,并单击配置默认生成任务。Visual Studio Code将询问您想要创建哪种配置文件。选择Node并用清单3.13替换文件的内容。 ?...图3.12 在Debug选项卡中,单击gear, Visual Studio Code将创建一个配置文件,用于代表您启动调试器。
但是使用 Python 开发桌面图形程序终究不是主流,其开发形态和组件的丰富程度也在某些方面不如主流的桌面图形程序开发框架。...创建一个页面 在 Electron 的窗口中,显示的内容可以是本地的HTML文件,也可以是外部的URL。...DOCTYPE html> <link rel="stylesheet" href="....我们可以通过使用 app.whenReady()这个 API 来侦听app 的 ready 事件。...另一个不算是劣势的劣势(对于非 Web 前端使用者),则是对于没有前端基础的朋友来说,还需要重新去学习前端的相关知识,前端各种「剪不断理还乱」的关系和规范相较于 Python 来说,入门相对要困难一点。
我们还利用了操作系统特有的特性,比如更新应用程序的标题栏,以显示当前打开的文件,以及自上次保存以来是否已经更改。...当BrowserWindow实例触发它的“ready-to-show”事件时,我们将调用它的show()方法,这将在UI完全准备好运行后使它不再隐藏。...此外,您还可以通过编程方式触发开发人员工具。 BrowserWindow实例上的webcontent属性有一个名为openDevTools()的方法。...要创建启动任务,请转到上面的终端选项卡,并单击配置默认生成任务。Visual Studio Code将询问您想要创建哪种配置文件。选择Node并用清单3.13替换文件的内容。...[figure312.png] 图3.12 在Debug选项卡中,单击gear, Visual Studio Code将创建一个配置文件,用于代表您启动调试器。
从这一期开始,我会陆续地总结桌面应用常用的一些功能案例,之后有类似需求举一反三即可。这节学习一下如何切换应用的主题。...如果您想要手动在亮/暗模式之间切换,您可以通过在nativeTheme模块的themeSource属性中设置所需的模式来做到这一点。此属性的值将传播到您的渲染进程。...head> 主题切换 <link rel="stylesheet" type="text/css" href...nativeTheme.shouldUseDarkColors返回一个布尔值,表示操作系统/Chromium当前是否启用了暗模式 , 如果你想修改这个值,你应该使用themeSource。...nativeTheme.themeSource可以有三个属性值:system, light 和dark 。它用于覆盖和取代Chromium选择在内部主题使用的值。
作为第一步,我查看了应用程序的整体设计,以便识别BrowserWindow/BrowserView/WebviewVScode 使用的每个配置。...在ElectroNG的帮助下,可以观察到应用程序使用单个BrowserWindowwith nodeIntegration:on。 这使用类似于协议BrowserWindow的协议加载内容。...allow-forms allow-pointer-lock allow-downloads 默认情况下,sandbox使浏览器将 iframe 视为来自另一个来源,即使它src指向同一个站点。...或者,我们可以引用该文件夹之外的资源吗? 答案来自我在最新的 Black Hat USA 2022 简报中观看的一个演示文稿。...经过几个小时的反复试验,我发现我们可以通过在事件img期间强制执行来获取触发 XSS 的标签的引用onload。 有了这个,所有的成分都准备好了,我终于可以组装最终的漏洞利用了。
现在恶意网站可以访问你网站的 window,这显然在重定向此方法时打开了一个安全漏洞。...恶意网站一旦通过 window.opener 访问了你的网站的 window 变量,它可以将你之前的网站重定向到一个新的钓鱼网站,这个网站可能与你打开的实际网站相似,甚至可能会要求你再次登录。...并非总是我们用标签打开一个新标签,在某些情况下,你必须通过执行javascript的 window.open() 来打开它,如下所示: function openInNewTab() { // 一些代码...我们创建 标记并分配所需的属性,然后在其上执行 click(),其行为与单击链接相同。 不要忘记在此处向标签添加 rel 属性。...但是,在通过JavaScript处理新标签页打开的元素上的 CMD + LINK 上,浏览器将附加窗口变量并将其发送到新标签页。
和 Electron的内部逻辑运行在所加载的 webcontent网页之外的另一个独立的上下文环境里。...主进程可以通过 BrowserWindow 创建窗口,即渲染器进程 渲染器进程 每个 Electron 应用都会为每个打开的 BrowserWindow ( 与每个网页嵌入 ) 生成一个单独的渲染器进程...,判断我们权限的方法用的是 Array.prototype.indexOf() ,以此来判断我们提交的 key 是否在数组中 既然上下文没有隔离,那我们就可以修改这个全局作用域中的JavaScript...,要执行的文件是固定的,这里不说修改环境的事,当然大家可以尝试 我们如何才能通过上下文将执行的文件替换成我们想要运行的文件呢?.../assets.braintreegateway.com https://checkout.paypal.com https://*.watchanimeattheoffice.com 之后通过将检查这些域名是否可以被用来做
import { app, BrowserWindow,ipcMain } from 'electron' ipcMain.on('articleRefreshMain', (event, message...,那么我应该在目录中也删除这个图片 这就需要监控文章编辑器的图片变化 我用的是H5的MutationObserver对象,理论上,用这个东西可以监控任何DOM的变化 var editorDocument...articleRefreshMain', { siteId: 'zhihu', url: window.location.href...}.bind(this), 800) }.bind(this), 800) 注意,如果要黏贴两个地方,最好间隔个几百毫秒 要不然网页还没反应过来,你就focus另一个地方了...,我放到了阿里云的CDN里,下载速度超赞,大家可以下载来用用看 有什么问题,请不吝提交issue,有issue必回!
前言 Electron 可以让你使用纯 JavaScript 调用丰富的原生(操作系统) APIs 来创造桌面应用。...主进程和渲染进程模块 两种进程都可用的模块 clipboard 在系统剪贴板上执行复制和粘贴操作。 crashReporter 将崩溃日志提交给远程服务器。...将数据存在主进程的某个全局变量中,然后在多个渲染进程中使用 remote 模块来访问它。...为了使窗口无边框,使得在某些时候让项目看起来更美观,所以在创建窗口的时候通过设置 frame 属性的值为 false 来创建无边框窗口。...但是无边框窗口会产生无法移动的问题,对于这个问题我们可以在渲染进程中通过编辑 css 文件来解决。
# 导航与打开新窗口 window.open()可以用于导航到指定URL,也可以用于打开新浏览器窗口 接收四个参数:要加载的URL、目标窗口、特性字符串和表示新窗口在浏览器历史记录中是否代替当前加载页面的布尔值...,需要开发者自己管理 某些浏览器中,每个标签页会运行在独立进程中,如果一个标签打开了另一个,而window对象需要和另一个标签页通信,则新标签页不能运行在独立进程中(在这些浏览器中,将新开标签页的opener...,可以借助这个方法将 Web 应用程序注册为像桌面软件一样的默认应用程序。...hashchange 会在页面 URL 的散列变化时被触发,开发者可以在此时执行某些操作。 状态管理 API 则可以让开发者改变浏览器 URL 而不会加载新页面。...否则,单击“刷新”按钮会导致 404 错误。所有单页应用程序( SPA, Single Page Application)框架都必须通过服务器或客户端的某些配置解决这个问题。
注入其中,但是服务器端应用程序会转义某些引号,您可以通过转义它们的转义字符来绕过这些引号。...,这可以将IE发送到循环中。...有些网站认为评论块中的任何内容都是安全的,因此不需要删除,这就允许我们使用跨站点脚本。 或者系统可以在某些东西周围添加注释标记,试图使其无害化。如我们所见,这可能不起作用. <!...这可用于删除用户、添加用户(如果访问该页的用户是管理员)、将凭据发送到其他位置等。。。。这是使用较少但更有用的XSS向量之一....当空间也是一个问题时(少两个字符会有很长的路要走), 这真的很方便,而且可以轻松地绕过类似regex的“(ht | f)tp(s)?“//”。 您也可以将“/”改为“\\”。
领取专属 10元无门槛券
手把手带您无忧上云