I've been fiddling around with electron's remote module. In my main-process I've created this variable:
global.storage = {};
My renderer-process is initialised with a file called startup.html.
win.loadURL('file://' + __dirname + '/startup.html')
In there, I include a javascript file containing the following function:
function enterMain(value){
remote.getGlobal('storage').exmpl = value;
window.location.replace('./general.html');
}
The value I'm passing is "hello", and when calling upon...
console.log(remote.getGlobal('storage').exmpl);
...after assigning the value it returns "hello", as it should. However, once the window location has been replaced to general.html, in which I include a javascript file containing this function:
$(document).ready(function(){
console.log(remote.getGlobal('storage').exmpl);
});
...it returns undefined. Why? Can anyone help me make sense of this?
There are a few things in play here:
remote
module caches remote objects in the renderer process on first access.With that in mind here's what's probably going on in your code:
remote.getGlobal('storage')
creates a new remote object and caches it.remote.getGlobal('storage').exmpl = value
adds a new exmpl
property to the remote object in the cache but doesn't propagate it to the original object in the main process.window.location.replace('./general.html')
restarts the renderer process which blows away the remote object cache.console.log(remote.getGlobal('storage').exmpl)
creates a new remote object since the cache is empty, but since the original object in the main process doesn't have an exmpl
property it's also undefined
on the new remote object.The remote
module seems deceptively simple at first, but it has many quirks, most of which are undocumented and as such may change in the future. I would suggest limiting the use of the remote
module in production code.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With