爱蒙编辑器(vue,一键打开)

2021/11/18 下午3:32:59

目前為 2023-11-08 提交的版本,檢視 最新版本

// ==UserScript==
// @name        爱蒙编辑器(vue,一键打开)
// @namespace   Violentmonkey Scripts
// @include       http://localhost*
// @include       http://127.0.0.1*
// @include       http://0.0.0.0*
// @include       http://192.168.*
// @grant       none
// @version     0.6.1
// @author      -
// @description 2021/11/18 下午3:32:59
// ==/UserScript==



document.addEventListener('click', event=>{
   if (event.ctrlKey) {
     event.preventDefault()
     event.stopPropagation()
     const app = useNuxtApp()
     const rootDir = app.vueApp._component.__file.replace(/node_modules.*/,'')
     const src = event.srcElement.getAttribute('data-v-inspector')
     fetch(`/__open-in-editor?file=${rootDir + src}`).then(()=>{
     highlight(event.srcElement)
  })
   }
})

document.addEventListener('keyup', (event) => {
  if (event.keyCode === 190 && event.target.tagName !== 'INPUT') {
    if (window.useNuxtApp) {
      const app = useNuxtApp()
      if(event.ctrlKey){
        console.log(1)
         console.log(event.target)
      }else{
         fetch(`/__open-in-editor?file=${app._route.matched[app._route.matched.length - 1].components.default.__file}`)
      }

      return false
    }
    if (window.__vite_plugin_ssr) {
      const baseSrc = __VUE_DEVTOOLS_GLOBAL_HOOK__.apps[2].app._instance.subTree.type.__file.replace(/renderer\/.*/, '')
      let pathname = location.pathname + '/index'
      const list = __vite_plugin_ssr['setPageFiles.ts'].pageFilesAll
      let fileUrl = ''
      if (pathname === '//index') {
        file = list.find(item => item.pageId === '/src/pages/index/index')
        fileUrl = file.filePath
      } else {
        file = list.find(item => item.pageId.includes(pathname))
        fileUrl = file.filePath
      }
      console.log(fileUrl)
      fetch(`/__open-in-editor?file=${baseSrc + fileUrl}`)
      return false
    }
    if (typeof app !== 'undefined') {
      const vue3Url = (window?.__VUE_DEVTOOLS_GLOBAL_HOOK__.apps?.[0]?.app?.config?.globalProperties.$route.matched.slice(-1))?.[0].components.default.__file
      if (vue3Url) {
        console.log(vue3Url)
        fetch(`/__open-in-editor?file=${vue3Url}`)
      } else if (window.uni) {
        const app = window?.__VUE_DEVTOOLS_GLOBAL_HOOK__.apps?.[0]?.app
        const baseSrc = app._component.__file.replace('/App.vue', '')
        const fileUrl = baseSrc + app.router.currentRoute.value.fullPath + '.vue'
        fetch(`/__open-in-editor?file=${fileUrl}`)
      } else if (app) {
        const vm = app.__vue__
        const fileUrl = vm.$route.matched[vm.$route.matched.length - 1].components.default.__file
        fetch(`/__open-in-editor?file=${fileUrl}`)
      }
    } else if (typeof getApp === 'function' && localStorage.getItem('custom-file-base-url')) {
      const url = localStorage.getItem('custom-file-base-url') + getApp()._route.fullPath + '.vue'
      console.log(url)
      fetch(`/__open-in-editor?file=${url}`)
    }
  }
})

 function highlight(clickedElement) {
    const rect = clickedElement.getBoundingClientRect()
    const frame = document.createElement('div')
    frame.style.position = 'absolute'
    frame.style.top = rect.top + window.scrollY + 'px'
    frame.style.left = rect.left + window.scrollX + 'px'
    frame.style.width = rect.width - 4 + 'px'
    frame.style.height = rect.height - 4 + 'px'
    frame.style.border = 'solid 2px gold'
    frame.style.borderRadius = '5px'
    frame.style.zIndex = '99999'
    frame.style.pointerEvents = 'none'
    document.body.appendChild(frame)

    $(frame).fadeIn(300, 'swing').delay(500).fadeOut(500, 'swing')
  }

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址