需求:返回值里面有 0,1,2,3,4 分别代表面试,开会,拜访顾客,项目实施,其他这5中类型,需要将获取到的0,1,2,3,4渲染到页面上,分别显示所对应的类型状态面试,开会,拜访顾客,项目实施,其他...json数据 将准备的json数据放在服务器上,可以方便调用 如果没有 自己的服务器,就准备掉后端的接口,或者直接存在本地的json文件里面,备用。...success: res => { this.setData({ //第一个data为固定用法,第二个data是json中的data
jq根据后端返回的对象值来控制权限显示的方法 <!
# 关于排序:如何根据函数返回的值对dart中的List进行排序 void main(){ List pojo = [POJO(5), POJO(3),POJO(7),POJO(1)
定义了个 Result 类,里面设置了多种不同类型的属性。 后面函数只要把想返回的值存储在 Result 对象里再返回这个对象,就可以实现函数返回多个不同类型的值的需求了。...int a; String[] b; } public static void main(String[] args){ // 获取函数返回的数据...(r.b[0]); } // 文本处理,返回一个对象 private static Result getValue() { // 创建对象 Result...r = new Result(); // 要返回的数据 int a = 8; String[] b = new String[1000];...b[0] = "A01"; b[1] = "A02"; // 将int和String数组的值传给对象 r.a = a; r.b = b;
String类型,只是返回值一个是String一个是Int,现在我们要声明一个类X,这个类要同时实现这两个接口: public class X:IA,IB 由于接口中要求的方法的方法名和参数是一样的...,所以不可能通过重载的方式来解决,那么我们该如何同时实现这两个接口拉?...解决办法是把其中的不能重载的方法直接写成接口的方法,同时要注意这个方法只能由接口调用,不能声明为Public类型的.所以X的定义如下: public class X:IA,IB { public...IB.GetA(string a)//实现IB接口 { Console.WriteLine("IB.GetA"); return 12; } } 同样如果有更多的同名同参不同返回值的接口...,也可以通过"接口名.函数名"的形式实现.
通过前面的学习,我们知道在Electron中,主进程和渲染进程是被换分成不同的功能的,主进程有完整的Node环境,而渲染进程默认是运行的是浏览器环境。...// p1.js const { contextBridge } = require('electron') // 将xxxx对象暴露给渲染进程中的全局对象,以便在渲染进程中直接访问 contextBridge.exposeInMainWorld...(apiKey, apiObject) 此方法将指定的 apiObject 对象暴露给渲染进程中的全局对象,以便在渲染进程中直接访问。...// 在处理函数中return的值就是返回给渲染进程的数据。...,向主进程发送数据,并接收返回值 let res = await elecAPI.sendToFather('来自渲染进程的问候') console.log
webPreferences:对象,用于配置网页的相关选项,例如启用 Node.js 集成、使用上下文隔离等。 这只是一些常见的配置项,还有其他可用的选项可以根据您的需求进行配置。...您可以根据 Electron 的文档详细了解每个事件的用法和触发时机。...webContents 返回窗口的 WebContents 对象,它提供了对窗口中加载的网页内容的控制和交互。 close() 关闭窗口。 destroy() 销毁窗口及其关联的资源。...isMaximized() 返回一个布尔值,表示窗口是否处于最大化状态。 isMinimized() 返回一个布尔值,表示窗口是否处于最小化状态。...getChildWindows() 返回当前窗口的所有子窗口的数组 isModal() 返回一个布尔值,表示窗口是否是模态窗口。
nodeIntegrationInWorker , 这个选项看起来和 nodeIntegration 很像,不过后面跟了 InWorker ,说明是在 Worker 中开启 Node.js ,默认值为...Web Worker 简介 一个 worker 是使用一个构造函数创建的一个对象(例如 Worker())运行一个命名的 JavaScript 文件 这个文件包含将在 worker 线程中运行的代码;...worker 运行在另一个全局上下文中,不同于当前的window。...创建 Web Worker 如何创建一个专用 Worker 呢?...功能测试 可以看到, Worker 功能是没有问题的,现在测试一下 Node.js 的能力 添加如下 Payload require('child_process').exec('open /System
这个函数接收一个request对象作为参数,并且通常需要调用一个回调函数,返回值是一个 Promise request 对象具体结构参考 https://nodejs.org...id=1 时不仅可以唤醒我们的应用,应用还可以获取到链接内容,并且根据实际内容进行对应处理 1....:// (例如:https://)的完整URL 不同平台值可能不完全相同 6. app.getApplicationInfoForProtocol 此方法返回包含应用程序名称,图标和默认协议处理器路径...不同于家族中的其他方法,该方法接收至少包含 :// (例如:https://)的完整URL 返回 Promise - resolve 包含以下内容的 object: icon NativeImage...,所以在做安全检查时,也需要根据实际情况,接下来列举几个曾经在注册自定义协议方面出现的问题 需要注意的是,外部引用的安全防护代码可能不会针对自定义协议进行防护,这也是造成很多漏洞的直接原因 CVE-2018
, iframe + window.open 获取失败 iframe + window.open 在 Electron 14.0 之前版本是可以成功获取的 测试一下不同安全配置下,iframe 获取 preload...脚本中的内容的情况 经过测试,发现 nodeIntegrationInSubFrames 让 iframe 获取 preload 中暴露的方法和值只和 nodeIntegrationInSubFrames...4) 小结 nodeIntegrationInSubFrames 对 embed 的影响与 iframe 一致 0x06 总结 nodeIntegrationInSubFrames 这个配置项的含义随着其他配置项而呈现不同效果...,目前来看,影响的对象主要是 iframe、object、embed 如果 nodeIntegrationInSubFrames 设置为 true 时, preload 脚本中暴露的方法和值等将向 iframe...、object、embed内暴露,也就是说iframe、object、embed 内部的内容中的 JavaScript 可以直接使用 Preload 脚本中定义好的功能和值 如果嵌入 iframe、object
20.0 版本开始默认值为 true) ,预加载脚本是拥有完整 Node.js 环境的,如果在 Preload 中如果定义并暴露了不安全的方法,而开发者对于预加载脚本的能力并不了解可能会带来危害 0x02...process https://www.electronjs.org/zh/docs/latest/api/process 这个模块用来处理对象的扩展,官方的案例中获取 Electron、Node.js...如何构建崩溃日志收集系统可以点击上方的链接 nativeImage 使用 PNG 或 JPG 文件创建托盘、dock和应用程序图标。...const { webFrame } = require('electron') webFrame.setZoomFactor(2) 很方便,确实大了 webUtils 与Web API对象(文件、...,读取并返回内容 main.js const { app, BrowserWindow, ipcMain } = require('electron'); const fs = require('fs'
例如,如果您在预加载脚本中设置 window.hello = 'wave' 并且启用了上下文隔离,当网站尝试访问window.hello对象时将返回 undefined。...,无论谁调用,均返回 1 ,这样就绕过了安全检查 再次点击就直接打开对应的二进制文件了,实现任意文件执行的效果 3) 重写 require 有些程序在 Preload 内部重新封装了 require ,...,这里不说修改环境的事,当然大家可以尝试 我们如何才能通过上下文将执行的文件替换成我们想要运行的文件呢?.../lib/parse.js#L55 这看起来是在执行的过程中的检查代码,所以这里修改的应该是 execa 过程中的调用的 join 和 test,通过修改函数返回值,成功绕过安全检查,执行我们想要的程序文件...sandbox 影响的,例如 Electron 6.0 以后,开启 sandbox 即使 Preload 将 require 绑定在了 window 对象中,渲染进程获取到 require 也无法加载
一般会在渲染进程中想主进程发送信息,然后弹出消息框,这里为了代码演示方便,直接写到主进程了 const { app, BrowserWindow, dialog } = require('electron...它返回一个 Promise 对象,你可以使用 then 方法来获取用户点击的按钮的索引。 它是非阻塞的,因此在对话框显示期间,应用程序可以继续执行其他操作。...它返回一个整数值,表示用户点击的按钮的索引。 它是阻塞式的,因此在对话框显示期间,应用程序的其他部分将无法执行。 使用它时,代码的执行会在对话框关闭之前停止。...各系统之间的差异请参考文档:https://www.electronjs.org/zh/docs/latest/api/dialog#dialogshowmessageboxbrowserwindow-options...文档地址:https://www.electronjs.org/zh/docs/latest/api/dialog#dialogshowopendialogbrowserwindow-options dialog.showOpenDialogSync
Menu 模块时,以下是一些主要的知识点: 创建菜单:使用 Menu.buildFromTemplate(template) 方法可以根据提供的菜单模板创建菜单对象。...role:使用内置的角色来指定一些常见操作的行为,如复制('copy')、剪切('cut')、粘贴('paste')等。这些角色会根据操作系统的约定自动处理相应的操作。...submenu:指定一个子菜单,允许创建层级嵌套的菜单。 分隔线和标签:通过在菜单模板中使用 type: 'separator' 可以添加分隔线,用于在菜单中分隔不同的菜单项。...菜单项和role相关的信息可以参考:https://www.electronjs.org/zh/docs/latest/api/menu-item 右键菜单 自定义右键菜单和自定义应用菜单用法基本差不多...想法主进程发送信息 elecAPI.showContextMenu() }) 参考文档:https://www.electronjs.org
根据 web 技术中对 window.open 的描述,也和之前 web 嵌入章节一样,如果父窗口和子窗口同源,则可以通过对象关系进行访问,不同源则不行 当然,在 features 中也有 noopener...,虽然有返回对象,但是获取不到子窗口的上下文 我们可以直接在子窗口上打开开发者工具,进入控制台,输出 window.opener看看是否存在内容 存在 window.opener 但是获取不到父窗口的上下文...那刚好同源,就可以通过 window.open 的返回对象,获取到读取的内容,之后通过 javascript 传递给攻击者,我们通过 alert 来证明我们可以获取到值 0x07 window.open...url 是否符合规定,如果如何就使用 shell.openExternal 进行打开,不符合就阻止,阻止 window.open 的方法是返回 { action: 'deny' } 我们测试一下,是否能够监听到..., Discord 用的是 new-window 事件进行监听的,具体如何做的校验文章也没有描述 具体可以参考以下链接 https://www.electronjs.org/zh/docs/latest
0x01 简介 导航我们都知道,高德地图对吧,我们搜索一个地点,它告诉我们如何到达。...,例如允许跳转到自己以及子域名等可控范围内的内容,官方给出代码如下 const { URL } = require('url') const { app } = require('electron')...修改顶层窗口的 URL 5 秒后 触发导航事件 5. window.location Window.location 只读属性返回一个 Location 对象,其中包含有关文档当前位置的信息 尽管 Window.location...—— CVE-2020-15174 在 iframe 中,如果设置 top.location 的地址和 iframe的地址不同源,则不会触发 will-navigate 事件,即导航事件,这显然是一个...bug https://mksben.l0.cm/2020/10/discord-desktop-rce.html 0x06 总结 网页跳转和导航的触发方法很多,但最终效果几乎都是一致的,就是在当前窗口或新窗口加载页面
如果只指定了目录,则会默认加载目录下的index.js文件(如果存在)。在Node.js中,require方法返回一个对象,该对象代表所引用模块的导出内容。...如果被引用的模块中使用了module.exports或exports对象,那么require方法返回的就是这个对象。...规范require符合CommonJS规范,而import符合ES6标准。因此,在使用时需要根据不同的规范选择相应的引入方式。静态/动态require是静态加载,也就是说,在编译时就会加载所需模块。...而import支持动态加载,可以在程序运行时根据需要进行加载。变量名在使用require时,被导入的模块会赋值给一个变量,该变量的名称可以自由指定。而在使用import时,需要使用指定变量名进行导入。...虽然它们都用于引入其他模块,但它们在规范、静态/动态、变量名、语法等方面存在许多不同之处。在实际开发中,需要根据需要选择适合自己的引入方式。
用于为 iframe 指定一个权限策略,该策略定义哪些功能可用于(例如,访问麦克风、摄像头、电池、Web共享等) 根据请求的来源。...浏览器根据自身情况决定资源的加载顺序 high 资源的加载优先级较高 low 资源的加载优先级较低 6) name 用于定位嵌入的浏览上下文的名称 该名称可以用作 a 标签与 form 标签的 target...表示在获取 iframe 资源时如何发送 referrer 头部 这个其实在之前文章 一次失败的漏洞串联尝试 中有提过,具体可以取值如下: 不发送 Referer 头 8) sandbox 控制应用于嵌入在...默认值是300 接下来的内容是不赞成使用的属性,可能不被所有的浏览器支持 12) align 此元素相对于周围元素的对齐方式 13) frameborder 值为1(默认值)时,显示此框架的边框。...,需要满足以下条件 nodeIntegration: true contextIsolation: false sandbox 没有显式地设置为 true 不同源的情况下,进行测试 执行失败,换成 window.parent.require
引言 上一篇文章介绍了如何创建安装 TarsGo,同时也阐述了如何开始一个 Tars-Go HTTP 服务。...入参中包含了变量名 timeFmt,表示以什么样的格式返回时间信息 出参包含了 UTC 时间戳、本地时间戳和时间字符串 个人建议 在创建协议的时候,我喜欢以 int MethodName(MethodReq...,根据 .tars 文件中指定的 module 字段,生成一个新的目录。...从返回值的角度,TarsGo rpc 方法的返回值除了协议中定义的(本例中是 int,对应于 Go 的 int32)之外,还有一个 error,如果需要的话,读者可以利用。...其中 10.0.4.11 和 17890 是 Tars 主控 tarsregistry 的地址 准备用于承载参数和返回值的结构体 这两行就是实际的 rpc 调用 ------ 发布服务 服务发布的方法在前一篇文章已经说明了
为了提升开发体验,仅仅一个命令行工具是远远不够的,我们需要开发一款桌面客户端,并同时提供 Windows、MacOS 等不同系统的版本。...Electron 的 BrowserWindow 类负责创建和控制浏览器窗口,app 对象则可以控制应用程序的各个事件与生命周期。...这些问题该如何解决呢? 答案是预加载。在展示登录窗口时,我们可以提前将主窗口开启并设置隐藏,预加载主窗口的静态资源。用户登录后,再通过 IPC 消息通知主窗口展示,达到秒开的效果。...这个命令会初始化一份默认的配置文件 .yarnclean 。yarn 在安装依赖后,将会自动根据 .yarnclean 进行依赖清理。...参考资料 [1] Electron: https://www.electronjs.org/ [2] Electron Fiddle: https://www.electronjs.org/fiddle
领取专属 10元无门槛券
手把手带您无忧上云