跳转至

解决链接跳转问题

项目是用VUE + Electron + Typescript开发的。

在插件菜单,设置了在线工具网站,最早使用的方法是创建了一个单独的dialog,然后加载对应的网页,也能勉强使用,但是有各种不太方便的问题。

后面在文档编写,渲染出来的预览区域,点击对应的连接,发现直接在当前应用上打开了对应的连接内容,而没有跳转到某个网页,或者某个文件,这用起来很不爽。

如图:有如下文档:

当我点击了对应的连接之后,界面变成了下面这样

这就让人很不爽快了,没有回退按钮,使用鼠标回退功能,发现回退后整个APP直接成了刚打开的样子,得重新读取文件夹,重新打开需要编辑的文件,如果没有保存,那么之前的内容可能会消失。

后面研究了下,在vue组件中,可以通过window.open命令打开一个网页。

在预览的组件中,做了如下处理:

TypeScript
onUpdated(() => {
  const links = document.querySelectorAll('#markdown-preview-html a')
  console.log('links', links)
  //遍历链接
  for (let i = 0; i < links.length; i++) {
    const href = links[i].getAttribute('href')
    console.log('href', href)
    if (!href) {
      continue
    }
    if (href.endsWith('.md')) {
      links[i].addEventListener('click', (event) => {
        event.preventDefault()
        const fileInfo: FileProperties = {
          name: parserFileName(href),
          path: href,
          type: 'file',
          content: ''
        }
        window.electron.ipcRenderer.send('open-select-file', fileInfo)
      })
    }

    if (href.startsWith('http')) {
      links[i].addEventListener('click', (event) => {
        event.preventDefault()
        window.open(href, '_blank', 'noopener, noreferrer')
      })
    }
  }
})

另外,菜单栏的在网页中打开链接,也有了新的方法:

Text Only
mainWindow.webContents.send('open-url-in-web-browser-window', webAppDialogs[name].link)

这样在vue组件中监听这个事件,然后使用windows.open,就可以在网页中打开链接了。

当然也保留的原始的功能,可以通过开关进行控制,这个准备写在设置中