• 意见建议
  • 官方的markdown插件是如何实现插件内打开链接的?

小白开发插件遇到些问题,插件内不能点击链接打开页面,要用api才行。
但是如果是markdown后期渲染出来的链接应该如何实现点击打开链接?
或者和markdown插件那样,ctrl左键打开链接

Zohn
官方应该不是这样写的,但这样应该也行,哈哈

document.addEventListener('click', e=>{
  let el = e.target
  if(el.tagName==='A'){
     utools.shellOpenExternal(el.href)
  }
})
  • Zohn 回复了此帖

    fofolee 可以可以,忽视了这个角度来实现,多谢大佬😏

      14 天 后

      fofolee 但是发现插件打包后会用不了这个功能😭 我是加在了mounted中,如:

          mounted() {
              document.addEventListener("click", e => {
                  let el = e.target;
                  if (el.tagName === 'A') {
                      utools.shellOpenExternal(el.href);
                  }
              });
          },

      在开发者模式中正常执行,但是打包后尴尬地发现用不了了,看不透是为啥,求助大佬

      Zohn 加个一秒的 timeout 再绑定事件试试?

      • Zohn 回复了此帖

        Im_Chris

        枫羽

        抱歉抱歉,是我看错了,原因是@click.stop阻止了事件传递了,但是这样我代码中就出现了一种很矛盾的情况

        <Parent @click.native="native实现点击内部元素都能触发我这个方法">
            <Sub1>......</Sub1>
            <Sub2>......</Sub2>
            <Sub3>......</Sub3>
            ........
            <SubN @click.stop="这个子元素不想触发父元素的方法,stop掉">
                <markdown>
                    这里是markdown渲染的 a 标签
                    <a href="这个链接只能用utools的api打开"</a>
                </markdown>
            </SubN>
            ........
            <SubM>.......</SubM>
        </Parent>

        所以stop掉后到不了监听器那里,就实现不了打开链接。
        但是不stop的话,父元素的native会让我点击子元素触发了那个不想要的父方法。😂
        如果把父方法放在子元素上,子元素不是撑满父元素的,会有些空白地方触发不了父方法。
        现在就是陷入了纠结中,感谢大家来讨论,不知道有没有什么好的解决办法🤒

        Zohn 看你这个文字描述暂时不太能够理解你的意思,就是为什么需要让父元素去接收到这个点按事件呢?如果你是想要实现点按链接来调用uTools相关的API来实现打开链接的话,为什么不能直接给a标签监听事件呢?

          说点什么吧...
          闽ICP备18007474号