当前,我正在开发一个桌面应用程序,该应用程序允许用户单击按钮来运行终端命令。尽管我遇到了一个我无法解决的问题,但我几乎已经用电子完成了它。
我的应用程序由两个文件组成:main.js和index.html。 javascript文件显示index.html,包括所需的电子封装,并包含index.html调用的所有功能。我正在使用的软件包之一是Electron-Preferences。这使我可以创建一个简单的窗口,以将用户首选项存储在JSON文件中,以及访问和更改它们。我有一个功能可以让用户即时更改一个首选项,但是,在从index.html文件调用此功能时遇到了问题。
在main.js文件中,定义了一个名为preferences的对象。但是,在我的html文件中,它说未定义此对象,因此它无法运行程序(我通过脚本src标记将main.js包含在html文件中)。有没有什么方法可以包含首选项对象,或者有什么方法可以重组代码,以便我可以从单独的文件中调用函数?
谢谢你!
main.js中的函数:
function setNetworkMain(){
const network = preferences.value('blockchain.network');
if(network === "testing"){
preferences.value('blockchain.network', 'main');
}
};
首选项对象:
const preferences = new ElectronPreferences({
/**
* Where should preferences be saved?
*/
'dataStore': prefLoc,
/**
* Default values.
*/
'defaults': {
'markdown': {
'auto_format_links': true,
'show_gutter': false
},
'preview': {
'show': true
},
'drawer': {
'show': true
},
"blockchain": {
"network": "main"
},
"update": {
"auto_update": true
},
"directory": {
"folder": dataDir
},
},
/**
* If the `onLoad` method is specified, this function will be called immediately after
* preferences are loaded for the first time. The return value of this method will be stored as the
* preferences object.
*/
'onLoad': (preferences) => {
// ...
return preferences;
},
/**
* The preferences window is divided into sections. Each section has a label, an icon, and one or
* more fields associated with it. Each section should also be given a unique ID.
*/
'sections': [
{
'id': 'blockchain',
'label': 'Blockchain Settings',
'icon': 'settings-gear-63',
'form': {
'groups': [
{
'label': 'Blockchain Settings',
'fields': [
{
'heading': 'Blockchain Network',
'content': "<p>Text</p>",
'type': 'message',
},
{
'key': 'network',
'type': 'radio',
'options': [
{'label': 'Main', 'value': 'main'},
{'label': 'Testing', 'value': 'testing'},
],
'help': 'Select which Blockchain you would like to use.'
}
]
}
]
}
},
{
'id': 'update',
'label': 'Update Settings',
'icon': 'square-download',
'form': {
'groups': [
{
/**
* Group heading is optional.
*/
'label': 'Update Settings',
'fields': [
{
'label': 'How would you like to check for updates?',
'key': 'auto_update',
'type': 'radio',
'options': [
{'label': 'Automatically check for updates', 'value': true},
{'label': 'Manually check for updates', 'value': false},
],
'help': 'Note: Automatic updates will be installed automatically.'
},
]
}
]
}
},
{
'id': 'directory',
'label': 'File Directory',
'icon': 'folder-15',
'form': {
'groups': [
{
'label': 'File Directory',
'fields': [
{
'label': 'Blockchain storage directory',
'key': 'folder',
'type': 'directory',
'help': 'Text.'
}
]
}
]
}
},
{
'id': 'about',
'label': 'About',
'icon': 'badge-13',
'form': {
'groups': [
{
'label': 'About',
'fields': [
{
'label': 'description',
'heading': 'Description',
'content': "<p>Text</p>",
'type': 'message',
},
{
'label': 'electron',
'heading': 'Electron',
'content': "<p>https://electronjs.org/</p>",
'type': 'message',
},
]
}
]
}
}
]
});