Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Electron中的外部图像链接无法在外部浏览器中打开_Javascript_Html_Electron - Fatal编程技术网

Javascript Electron中的外部图像链接无法在外部浏览器中打开

Javascript Electron中的外部图像链接无法在外部浏览器中打开,javascript,html,electron,Javascript,Html,Electron,我正在使用此代码在Electron之外的浏览器中打开外部链接。如果在设计后编写文本,则效果良好: 设shell=需要“电子”。shell document.addEventListener“单击”函数事件{ 如果event.target.tagName=='A'&&event.target.href.startsWith'http'{ event.preventDefault shell.openExternalevent.target.href } } 这里的问题是,您正在侦听文档上的单击,

我正在使用此代码在Electron之外的浏览器中打开外部链接。如果在设计后编写文本,则效果良好:

设shell=需要“电子”。shell document.addEventListener“单击”函数事件{ 如果event.target.tagName=='A'&&event.target.href.startsWith'http'{ event.preventDefault shell.openExternalevent.target.href }
} 这里的问题是,您正在侦听文档上的单击,然后只检查event.target。如您所知,如果单击发生在子元素上,例如链接内的图像,则event.target指向该子元素,您将无法检测到该链接已被单击

这是jQuery派上用场的地方之一。像这样的事情很容易处理

但是您不必使用jQuery。因为Electron使用铬,点击事件有一个称为path的非标准属性。该属性是一个父级数组,从DOM开始,一直到body、document,最后是global。您可以在此数组上运行以检查是否有任何元素恰好是链接,然后将该链接返回给事件处理程序进行处理

下面是它的样子:

document.addEventListener'click',functionevent{ const link=getLinkevent; 如果链接{ event.preventDefault 警报“捕获:”+link.href; } }; 函数getLinkevent{ 返回事件.path.find$el=>{ 如果$el.tagName=='A'&&$el.href.startsWith'http'{ 返回true; } 返回false; }; } 图像链接:

文本链接:

谢谢,我最后使用了您的第一个建议,使用了以下代码:$document.readyfunction{$'.imagelink'。单击函数{shell.openExternal};};