我正在构建一个电子应用程序,并且在页面向自身发布时遇到了需要未定义的问题。我的目标是使用电子作为现有站点的包装器,不幸的是,该站点具有此发布行为。在对 preload 和 executeJavascript 进行大量试验和错误之后,我发现使用 require() 和 node-integration 有效。除非请求是 POST。我对 Electron 和 node 还很陌生,所以也许我只是缺少一些简单的东西!
我在 Electron 0.26.0 和 0.27.1 中得到了这种行为。
这是重现问题的最简单方法。
包.json
{
"name": "PostExample",
"version": "0.1.0",
"main": "main.js",
"description": "Post Loses Global"
}
main.js
var app = require('app')
var BrowserWindow = require('browser-window')
var mainWindow = null;
app.on('window-all-closed', function() {
app.quit()
});
app.on('ready', function() {
mainWindow = new BrowserWindow({
"node-integration": true,
});
mainWindow.loadUrl('file://' + __dirname + '/index.html')
mainWindow.openDevTools()
});
索引.html
<html>
<script type="text/javascript">
console.log(typeof global)
try{
var fs = require("fs");
} catch(e){
console.warn("ERROR", e)
}
</script>
<body>
<h1>Posts to self</h1>
<form action="" method="post">
<input type="text" name="somevar" value="val" />
<button type="submit">Go</button>
</form>
</body>
</html>