上一主题 下一主题
ScriptCat,新一代的脚本管理器脚本站,与全世界分享你的用户脚本油猴脚本开发指南教程目录
12下一页
返回列表 发新帖

关于使用vite-plugin-monkey插件进行dev执行时刻问题

[复制链接]
  • TA的每日心情

    2024-6-12 17:04
  • 签到天数: 5 天

    [LV.2]偶尔看看I

    4

    主题

    28

    回帖

    61

    积分

    初级工程师

    积分
    61

    油中3周年油中2周年新人报道挑战者 lv2

    发表于 2024-5-1 13:00:42 | 显示全部楼层 | 阅读模式
    悬赏20油猫币未解决

    脚本设置中已设置@runb-at document-start
    使用pnpm run dev时,想劫持unsafeWindow.setTimeout发现总是劫持不了,但是使用preview进行安装后能劫持
    想了个麻烦的方法,使用build --watch,然后油猴中使用@require file://....引入自动打包后的脚本,但是感觉还是很麻烦,想在dev下使用
    查了issue后找到#60
    但是这个解决方法没看懂😰,求gg解答

    比如我想在https://m.baidu.com/s?word=test下劫持掉setTimeout

    dev下(劫持失败)

    4d86920e8d8cab19e2d4c141fcd53c51.png

    使用file://引入的build后的脚本(劫持成功)

    30465e04cbba28272b16aa3f7444a3bd.png

  • TA的每日心情

    2024-6-12 17:04
  • 签到天数: 5 天

    [LV.2]偶尔看看I

    4

    主题

    28

    回帖

    61

    积分

    初级工程师

    积分
    61

    油中3周年油中2周年新人报道挑战者 lv2

    发表于 2024-5-1 17:54:44 | 显示全部楼层

    本帖最后由 whitesev 于 2024-5-1 17:57 编辑

    本帖最后由 whitesev 于 2024-5-1 17:57 编辑

    Clip_2024-05-01_17-52-54.png

    Clip_2024-05-01_17-53-52.png

    Clip_2024-05-01_17-53-34.png

    还有个很好奇的地方,为啥第一个正常,第二种方式提示错误😰

    啊,想了一下,应该是填入的bottom被认为是一个变量,传入要为字符串的话再加个引号

    回复

    使用道具 举报

  • TA的每日心情
    开心
    10 小时前
  • 签到天数: 213 天

    [LV.7]常住居民III

    305

    主题

    4189

    回帖

    4056

    积分

    管理员

    积分
    4056

    管理员荣誉开发者油中2周年生态建设者喜迎中秋油中3周年挑战者 lv2

    发表于 2024-5-3 09:27:34 | 显示全部楼层
    有可复现的简单示例吗?
    上不慕古,下不肖俗。为疏为懒,不敢为狂。为拙为愚,不敢为恶。
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2024-7-27 20:27
  • 签到天数: 1 天

    [LV.1]初来乍到

    0

    主题

    16

    回帖

    11

    积分

    荣誉开发者

    积分
    11

    荣誉开发者油中3周年油中2周年

    发表于 2024-5-4 16:55:17 | 显示全部楼层
    在使用 @run-at document-start  腳本將在文檔開始加載時運行..在DOM元素可用之前。如果在這個階段使用 unsafeWindow.setTimeout,可能會因為 unsafeWindow 對象還沒有完全準備好而導致錯誤

    解決這個問題的一個方法是確保在使用 unsafeWindow.setTimeout 之前,頁面的主要部分已經加載完成。您可以通過監聽 DOMContentLoaded 事件來確保DOM元素已經準備好:JS腳本方法是...document.addEventListener('DOMContentLoaded', (event) => {
        unsafeWindow.setTimeout(() => {
            // 代碼
        }, 1000);
    });
    確保您的構建工具(如Webpack或Rollup)正確處理了模塊之間的依賴關係,並且沒有對全局對象進行不必要的封裝或修改。
    確定沒問題的話~$$$捐給油猴或腳本貓吧~我之前都用油猴...現在用腳本貓....但是都沒付費
    回复

    使用道具 举报

  • TA的每日心情

    2024-6-12 17:04
  • 签到天数: 5 天

    [LV.2]偶尔看看I

    4

    主题

    28

    回帖

    61

    积分

    初级工程师

    积分
    61

    油中3周年油中2周年新人报道挑战者 lv2

    发表于 2024-5-4 21:16:30 | 显示全部楼层

    王一之 发表于 2024-5-3 09:27

    有可复现的简单示例吗?

    https://baiqi.lanzoul.com/iYE4d1xown7g

    gg看这个demo

    pnpm i
    pnpm run dev
    pnpm run build
    回复

    使用道具 举报

  • TA的每日心情

    2024-6-12 17:04
  • 签到天数: 5 天

    [LV.2]偶尔看看I

    4

    主题

    28

    回帖

    61

    积分

    初级工程师

    积分
    61

    油中3周年油中2周年新人报道挑战者 lv2

    发表于 2024-5-4 21:20:03 | 显示全部楼层

    s0919756 发表于 2024-5-4 16:55

    在使用 @run-at document-start 腳本將在文檔開始加載時運行..在DOM元素可用之前。如果在這個階段使用 uns ...

    unsafeWindow就是浏览器window,这里用不到DOM的相关操作,不存在需要等待页面loaded

    回复

    使用道具 举报

  • TA的每日心情
    开心
    2024-7-27 20:27
  • 签到天数: 1 天

    [LV.1]初来乍到

    0

    主题

    16

    回帖

    11

    积分

    荣誉开发者

    积分
    11

    荣誉开发者油中3周年油中2周年

    发表于 2024-5-5 02:36:01 | 显示全部楼层

    本帖最后由 s0919756 于 2024-5-5 02:45 编辑

    本帖最后由 s0919756 于 2024-5-5 02:39 编辑

    你的安裝指令是正確的,而我的意思是你的腳本啟動後,要下載的目標就會開始準備,這個時間受很多因素影響,例如,網路速度,檔案大小,來源數據正確與否,為了避免錯誤,你可以在腳本中填加我給你的js代碼段,這段代碼是依照你原來的腳本,所添加的,那段是萬用的,為的就是避免你下載的時間點出錯,加那段代碼之後再試試看吧!如果還是錯誤,告訴我你整段腳本,我幫你修正,因為js本身就是很強大的語言,特性是面向前端,也就是瀏覽器操控,而非終端,,其他工具做的到,js一樣可以,而不管是油猴或腳本貓都可以協助你,舉例,你也可以把cmd讓他在瀏覽器發哮,在腳本編碼方式套用node.js的模型就可以了,我有在腳本站放了一個模型,後台腳本ping這是為了處理多種異步函數自動化而打造的,當中的概念有包含çmdpingip,套用的就是node的模型,當中也包函我給你的代碼段,而這個是腳本處理錯誤的設置,如果您是想要學編碼我很樂意為你服務,以後你不用再研究其他工具或代碼語言,js腳本搭配油猴,腳本貓這個都有編輯功能,也有輔助工具,一樣可以幫你成為主宰者,掌握世界,加油,

    回复

    使用道具 举报

  • TA的每日心情
    开心
    10 小时前
  • 签到天数: 213 天

    [LV.7]常住居民III

    305

    主题

    4189

    回帖

    4056

    积分

    管理员

    积分
    4056

    管理员荣誉开发者油中2周年生态建设者喜迎中秋油中3周年挑战者 lv2

    发表于 2024-5-5 23:53:36 | 显示全部楼层

    我测试了一下,我觉得应该是运行时间的问题,dev模式下应该还要执行一些额外的函数,导致劫持时间过长,页面已经使用了未被劫持的setTimeout

    我在vite.config.ts添加了"run-at": "document-start", 可以成功劫持了:

    image.png

    上不慕古,下不肖俗。为疏为懒,不敢为狂。为拙为愚,不敢为恶。
    回复

    使用道具 举报

  • TA的每日心情

    2024-6-12 17:04
  • 签到天数: 5 天

    [LV.2]偶尔看看I

    4

    主题

    28

    回帖

    61

    积分

    初级工程师

    积分
    61

    油中3周年油中2周年新人报道挑战者 lv2

    发表于 2024-5-6 14:58:26 | 显示全部楼层
    s0919756 发表于 2024-5-6 13:05
    你是想下載畫面中的影片嗎??????原因出在......你搞得太複雜了~~~那個50秒我幫你下載回來了~要怎麼寄給妳呢 ...

    并不是,我不需要下载页面中的东西,只是想劫持setTimeout
    回复

    使用道具 举报

  • TA的每日心情

    2024-6-12 17:04
  • 签到天数: 5 天

    [LV.2]偶尔看看I

    4

    主题

    28

    回帖

    61

    积分

    初级工程师

    积分
    61

    油中3周年油中2周年新人报道挑战者 lv2

    发表于 2024-5-6 15:10:07 | 显示全部楼层

    王一之 发表于 2024-5-5 23:53

    [md]我测试了一下,我觉得应该是运行时间的问题,dev模式下应该还要执行一些额外的函数,导致劫持时间过长 ...

    document-start已设置了,

    注入模式设置的

    • 即时劫持不到
    • 标准刷新10次可能就2次劫持到函数

    😰很奇怪,暂时还想不到还有啥方式能稳定劫持到

    回复

    使用道具 举报

    发表回复

    本版积分规则

    快速回复 返回顶部 返回列表