小编Meg*_*jin的帖子

是否可以从内存中的 html 字符串加载电子 webContents?

假设我有两个进程:

进程 1 正在向进程 2 发送一个有效的 html 字符串:

ipcRenderer.send('open-window-from-string', 
'<!DOCTYPE html>' + '<html>' + htmlElement.innerHTML + '</html>');
Run Code Online (Sandbox Code Playgroud)

进程 2(电子主进程)试图从该字符串打开一个新窗口:

ipc.on('open-window-from-string', (event, htmlString) => {
  const windowFromString= BrowserWindow.fromWebContents(htmlString);
}
Run Code Online (Sandbox Code Playgroud)

我知道我可以将 html 保存为实际的 html 文件。这样,在使用时一切正常:

loadURL(`file://${__dirname}/windowFromString.html`);
Run Code Online (Sandbox Code Playgroud)

但是,这会导致不必要的读/写操作。

这就是为什么我试图从我的记忆中的 htmlString 加载一个新窗口。那么问题又来了: 是否可以从内存中的 html 字符串加载电子 webContents?

在此先感谢您的帮助。

问候, Megajin

javascript node.js electron

7
推荐指数
1
解决办法
5429
查看次数

在仅nodejs的环境中的ES6模块/类中定义“真实”私有方法,而不会发生任何信息泄漏

我知道INSIDE ES6类中没有REAL私有方法。但是我在玩了一会儿,发现了一些好东西-也许...

正如我提到的,不可能不公开对象的属性。但是,当我将类划分为单独的文件,然后将这些类导出时,我试图实现某种OOP编程:

class MyClass {
  constructor() {
    /**
     * Initialize stuff...
     */
  }

  myMethod() {
    /**
     * Do public stuff...
     */
  }

}

// expose class to environment.
export default MyClass;
Run Code Online (Sandbox Code Playgroud)

所以我可以导入该类:

import MyClass from './MyClass.js';

当然myMethod可以从导入该模块的任何其他文件访问。既然我需要只能由该类访问的变量和函数,我已经尝试过了:

// private variable outside of class scope but still accessible.
let possiblePrivateVariable = 'am I a private variable?';

class MyClass {
  constructor() {
    /**
    * Initialize stuff...
    */
  }

  myMethod() {
    // run private method.
    console.log(_possiblePrivateMethod());
    // …
Run Code Online (Sandbox Code Playgroud)

javascript node.js ecmascript-6 es6-class es6-modules

6
推荐指数
1
解决办法
6537
查看次数

电子产品无声印刷

我目前正在构建一个电子应用程序.我在我的本地文件系统上有一个PDF,我需要静默打印出来(在默认打印机上).我遇到了节点打印机库,但它似乎对我不起作用.有没有简单的解决方案来实现这一目标?

node.js electron

6
推荐指数
2
解决办法
1万
查看次数

C#如何使用USB Hub检查USB端口并使用控制器?

我目前正在尝试用USB Hub扫描所有USB端口(检查它是否为Root)以及它们连接到哪个控制器.

为了使其更加明显:

USB Port1 (nothing plugged in)   -> USB Hub1   |                 |-> Controller 1
USB Port2 (Keyboard plugged in)  ->            |-> USB Root Hub  |-> Controller 2
USB Port3 (nothing plugged in)   -> USB Hub2   |                 |
USB Port4 (nothing plugged in)   ->            |-> USB Root Hub  |-> Controller3 (Mainboard)
Run Code Online (Sandbox Code Playgroud)

我想将用户所有端口和连接的集线器显示为树.如果USB端口及其控制器正在使用中.

我希望你们能理解我想要描述的内容.如果你能给我一些关键词甚至代码片段我会非常感激.

PS:抱歉我的英语不好.

到目前为止,这是代码(我正在使用.NetFramework 4.5.x):

USBPortScanner类:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Management;
using System.IO.Ports;

namespace USBPortScanner

{
    class USBPortScanner
    {
        static void Main(string[] …
Run Code Online (Sandbox Code Playgroud)

c# usb controller port-scanning

4
推荐指数
1
解决办法
5197
查看次数

removeEventlistener与箭头功能和参数无法正常工作

我有一个页面,可以容纳多个可编辑的内容。每当内容被编辑时,我都想触发某种检查事件。

我实现此目的的代码如下所示:

// Find all editable elements.
let allEditableElements = document.querySelectorAll('[contenteditable="true"]');

for(let i = 0; i < allEditableElements.length; i++){

  //Remove eventListener to prevent duplicate events.
  allEditableElements[i].removeEventListener('input', (event) => {myClass.myEventMethod(event);}, false);

  // Add event.
  allEditableElements[i].addEventListener('input', (event) => {myClass.myEventMethod(event);}, false);
} 
Run Code Online (Sandbox Code Playgroud)

到目前为止一切正常。但是正如我所说,用户可以编辑内容,包括向页面本身添加新的可编辑内容。届时事件将再次被设置,这就是为什么我尝试event事先删除事件的原因。

我的问题是为什么该removeEventListener功能不能按预期工作?并没有办法像这样给定事件命名:

// With eventNameGivenByUser an event could be removed just by its name.
addEventListener('eventTriggerName', 'eventNameGivenByUser', function(), [, options]);
Run Code Online (Sandbox Code Playgroud)

当然,我做了一些研究,发现代码本身可以像这样工作:

// Find all editable elements.

let allEditableElements = document.querySelectorAll('[contenteditable="true"]');

for(let i = 0; i < allEditableElements.length; i++){ …
Run Code Online (Sandbox Code Playgroud)

javascript ecmascript-6

3
推荐指数
1
解决办法
3942
查看次数

如何为nginx(虚拟主机)找出合理的内容安全策略源?

我目前正在尝试更多地了解nginx和作为网络服务器的给定安全性.我想象的设置是nginx,有3个虚拟主机.每个主机都运行一个博客.

在完成nginx的一些强化教程后,我确实发现自己陷入了困境http-headers......我不确定如果我有多个虚拟主机,通过nginx实施内容安全策略是否正确,这可能取决于不同的不同内容站点.

但是,我目前的立场是弄清楚如何在每个*-src参数中为nginx设置合理的内容安全策略白名单.

无论是指令引用和源列表的参考,也没有 最新的内容安全策略级别3做了回答"最佳实践白名单"所有的问题*-src.

假设我已经把'self'所有这些参数都放在了:

  • default-src:

如果设置为,这是唯一有意义的参数 'self'

  • script-src,style-src,img-src,connect-src,font-src,child-src:

其余的让我头疼.我怎么知道每个好消息来源?如果我将它们设置为'self'将使用户总是得到一个400 HTTP错误?

就像我之前说的那样,我不确定通过nginx实施内容安全策略是否正确.如果我正在运行一个拥有5个以上客户端的网络服务器,那么我就不可能知道这些客户的每个"好"来源.我想再次指出,我只是想知道这些源参数.其他HTTP-Headers(不仅仅是内容安全策略)对我来说很有意义,而且是完全合理的.

此致,Megajin

security webserver nginx http-headers content-security-policy

3
推荐指数
1
解决办法
1万
查看次数