在这个答案中,建议可以定义一个javascript函数,并将其附加到windows
中的preload.js
文件中,然后从渲染器进程中调用(在包含的renderer.js
或直接作为html文件中的脚本)使用window.functionName
,即在preload.js
中:
window.myFunction = function(){
//do something here that requires
//ipcRenderer
}
在索引中。html
:
<script>
var myButton = document.getElementById("myButtonId")
myButton.addEventListener('click', (e) => {
window.myFunction();
});
</script>
但是,当我这样做并单击按钮时,我会得到错误消息uncaughttypeerror:window。myFunction不是一个函数
。有人能解释一下为什么会抛出这个错误,以及如何定义函数吗?
不必使用桥接方法的另一种解决方法是禁用ContextIsolation,尽管现在不建议这样做以确保更好的安全性。
但是,如果您有遗留代码并且不想更改,则可以这样做。
webPreferences: {
contextIsolation: false,
preload: path.join(__dirname, './preload.js'),
}
将webPreferences变量显式设置为false。默认情况下,现在新版本的Electron中启用了ContextIsolation
使用上下文隔离和上下文桥。
预加载。js
const { contextBridge } = require('electron')
contextBridge.exposeInMainWorld('YourAPI',
{
yourFunction: () => {'Your Codes.'}
});
你的. html
<html>
<head></head>
<body>
<script>
window.YourAPI.yourFunction();
</script>
</body>
</html>
问题内容: 我想在一些嵌入式html中调用一个函数。我尝试了以下操作,但未调用该函数。这是在render方法中调用函数的错误方法吗? 问题答案: 要调用该函数,您必须添加
通过 runApp 方法运行的 Web 应用,可通过 rax-pwa 提供的 preload 和 prerender 方法优化用户体验。 $npm i rax-pwa --save 预加载 预加载资源可以帮助页面更快速的渲染。 可通过 preload 来进行预加载。仅对 Web App 有效。 import { createElement } from 'rax'; import { preloa
Vue3 render函数创建的按钮怎么添加自定义指令 在template中直接写是可以的 这样的话 正常显示
由于 Electron 使用 Chromium 显示网页,那么,Chromium 的多进程架构也被使用。Electron 中的每个网页都在自己的进程中运行,称为渲染器进程 (renderer process)。 在正常的浏览器中,网页通常运行在沙盒封装化的环境中,并且不允许访问本机资源。然而,Electron 用户有权在网页中使用 Node.js 的 API,从而允许较低级别的操作系统交互。 选自
electron 的渲染进程如何获取到process.cwd()的值 或者 process.resourcesPath也行 在preload.js中可以拿到process对象,但是没有cwd函数和resourcesPath的值。 之前版本的remote.getGlobal在27版本中也被移除,否则可以在main.js里面进行设置 还有一种办法是在preload.js中定义 ipcRender的通信
在Spring Boot中,有一个属性文件application.property,与这个属性一起,我创建了一个额外的属性文件,名为MyOwnProp.properties。 如何在中加载?表示如何在Application.properties中包含另一个命名属性? 有什么进展吗?