我想使用启用了contextIsolation的targetOrigin
和postMessage
之间的preload.js
的{{1}}来验证/区分消息的来源。
因此,如果消息来自renderer.js
,则originTarget类似于preload.js
,而来自渲染器file://preload.js
。
设置file://renderer.js
或file://preload.js
时,出现错误file://renderer.js
。
有人知道如何实现我要达到的目标吗? 谢谢
答案 0 :(得分:0)
引用MDN web docs:
最后,将消息发布到文件的页面上:URL当前要求targetOrigin参数为“ *”。 file://不能用作安全限制;将来可能会修改此限制。
因此在preload.js
中,您将不得不诉诸于类似的
window.addEventListener("DOMContentLoaded", () => {
window.postMessage({ type: "fooType", text: "barMsg" }, "*")
})
在接收渲染器(网页)中,您可以限制消息处理,例如像这样:
window.addEventListener(
"message",
event => {
if (event.origin === "file://" && event.source === window) {
console.log(event.data)
}
},
false
)
用电子5.0.1
测试并跟随webPreferences
测试BrowserWindow
:
{
nodeIntegration: false,
contextIsolation: true,
enableRemoteModule: false,
preload: path.join(__dirname, "preload.js")
}
这趟火车晚了一点,但可能仍然对您或其他Google员工有所帮助。
干杯,福特