Javascript 使用Electron jS应用程序的应用程序启动器

Javascript 使用Electron jS应用程序的应用程序启动器,javascript,node.js,npm,electron,Javascript,Node.js,Npm,Electron,我正在使用electron JS使用HTML/CSS/JS创建一个应用程序启动器 对于每个应用程序,我都有一个a href标记,用于重定向到应用程序上的路径 如果我在a href中放置了一个普通链接,您将正常访问目标网站 如果我在a href中放置了一个可执行路径,则该链接不会打开应用程序 我在firefox中试用了projet,幸亏使用了这个插件,我能够直接启动应用程序。 如何从Electron JS中的项目启动应用程序?我指的是多个应用程序,而不仅仅是一个 <div class=&qu

我正在使用electron JS使用HTML/CSS/JS创建一个应用程序启动器

对于每个应用程序,我都有一个
a href
标记,用于重定向到应用程序上的路径

如果我在
a href
中放置了一个普通链接,您将正常访问目标网站

如果我在
a href
中放置了一个可执行路径,则该链接不会打开应用程序

我在firefox中试用了projet,幸亏使用了这个插件,我能够直接启动应用程序。

如何从Electron JS中的项目启动应用程序?我指的是多个应用程序,而不仅仅是一个

<div class="1"><a href="file:///myPathToFile.exe">Application 1</a></div>
<div class="2"><a href="file:///myPathToFile2.exe">Application 2</a></div>

我认为您需要使用and,使用函数从页面发送消息

HTML

我认为您可以这样做,而不是使用标签:

<div class="1">
<span onclick="openApp" value="file:///myPathToFile.exe">Application 1</span>
</div>
在您的电子文件中:

从这里开始:


希望你不要放弃,你的项目看起来很酷。如果不清楚,请告诉我,因为您使用的是electron,您也可以使用nodeJS API。NodeJS有
子进程
模块,可以实现您想要的功能

这里有一个例子

const childProcess=require(“child_进程”);
//将事件处理程序附加到所有应用程序链接。如果愿意,可以将选择器更改为更精确的值。
document.querySelectorAll(“a[href]”).forEach(elem=>{
元素addEventListener(“单击”,()=>{
childProcess.spawn(elem.getAttribute(“href”);//使用a元素上的href生成可执行文件
//警告:这样做可能会使您的计算机暴露给黑客。
//确保href属性是可信的,并且不是来自web。黑客可能会使用href属性在您的计算机上启动恶意软件。
});
});
有关
子进程
模块的更多详细信息:

编辑: 确保在加载DOM节点后执行此操作。你可以这样做来实现它:

$(()=>{
//代码在这里
});
或者,如果不使用jquery:

window.addEventListener('DOMContentLoaded',()=>{
//代码在这里
});

如果您必须使用默认窗口程序启动应用程序/文件,那么您可以使用shell.openPath,下面是工作代码-

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Hello World!</title>
<!-- https://electronjs.org/docs/tutorial/security#csp-meta-tag -->
<meta http-equiv="Content-Security-Policy" content="script-src 'self' 'unsafe-inline';" />
</head>
<body>
<div class="1"><a href="#" onclick="openFile('C:\\folder\\path_to_exe')">Application 1</a> 
</div>
<script>
    function openFile(filepath){
    const shell = require('electron').shell;
    shell.openPath(filepath);
    }
    </script>
 </body>
 </html>

你好,世界!
函数openFile(文件路径){
常量外壳=要求('electron')。外壳;
openPath(filepath);
}

注意-路径中不要使用正斜杠,请使用双反斜杠。

谢谢您的回复!但我试过了,不幸的是没有成功。我完全尝试了你的代码,除了可执行文件的路径外,没有做任何修改。我还尝试在span上使用“a href”标记。我使用a href的原因是因为我有其他CSS和JS代码基于它。而且
span
标签是不可点击的。谢谢你的回复。我可能错了,但我把这段代码放在了script.js文件中,但没有起作用。我也在main.js中初始化了childProcess,什么都没有。@Seito Kimbo确保在加载所有dom元素后执行此脚本。您可以将jquery用于以下内容:
$(()=>{/*code here*/})。对不起,我不太明白你的意思:/。你能直接修改你的帖子吗?我不知道,但没用。我得感谢你的努力。我想我只是不知道该放在哪里。我试着把你的代码放在main.js和script.js中,但都不起作用。是的,我想用Windows正常打开它们。问题是,我如何将函数与我拥有的每个
a href
标记关联?您是否能够提醒或控制台.log您传递给函数的文件路径?非常抱歉,我不明白您的意思。。函数openFile(filepath){alert(filepath);}是否可以重新生成此函数的字符串输出。请使用类似于“E://workstation//app.exe”的格式的文件路径,即不要使用反斜杠,而要使用正斜杠。
const { execFile } = require('child_process');
const { ipcMain } = require('electron');

ipcMain.on('open-app', (e, path) => {
  const child = execFile(path, {cwd: 'C:\\test\\'}, (error, stdout, stderr) => {
  if (error) {
    throw error;
  }
  console.log(stdout);
return stdout;
});
  e.returnValue = child;
});
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Hello World!</title>
<!-- https://electronjs.org/docs/tutorial/security#csp-meta-tag -->
<meta http-equiv="Content-Security-Policy" content="script-src 'self' 'unsafe-inline';" />
</head>
<body>
<div class="1"><a href="#" onclick="openFile('C:\\folder\\path_to_exe')">Application 1</a> 
</div>
<script>
    function openFile(filepath){
    const shell = require('electron').shell;
    shell.openPath(filepath);
    }
    </script>
 </body>
 </html>