contextBridge.exposeInMainWorld('myDwonloadStatus', { getDonloadStatus:()=>{ return MyisDownload; } }); 无法在第一次加载的时候把方法挂在window上,导致渲染层调用失败
时间: 2024-02-23 11:01:00 浏览: 81
cl-autowrap:(c-include“ file.h”)=>完整的FFI包装器
这个问题可能是因为在你的代码中,将 `contextBridge.exposeInMainWorld` 放在了渲染进程的 DOMContentLoaded 事件监听器内部,而可能在这个事件发生之前渲染进程就已经尝试调用了该方法。所以,你可以尝试将 `contextBridge.exposeInMainWorld` 放在渲染进程的顶层作用域内,以确保在渲染进程尝试调用该方法时它已经被正确地暴露在了主进程的全局对象上。例如:
```javascript
const { contextBridge } = require('electron');
// 在渲染进程的顶层作用域内将方法暴露在主进程的全局对象上
contextBridge.exposeInMainWorld('myDwonloadStatus', {
getDonloadStatus: () => {
return MyisDownload;
}
});
// 处理DOMContentLoaded事件的代码
document.addEventListener('DOMContentLoaded', () => {
// 在事件处理函数中调用该方法
window.myDwonloadStatus.getDonloadStatus();
});
```
这样,在渲染进程尝试调用 `window.myDwonloadStatus.getDonloadStatus()` 时,该方法应该已经被正确地暴露在了主进程的全局对象上。
阅读全文