repisal 发表于 2024-10-18 18:30:07

油猴如何根据console上的错误信息,运行某方法

各位大佬,我在写油猴脚本时,偶尔会出现由于服务器卡顿导致爆出错误,脚本卡住不往下执行的情况。故我打算根据常出现的error信息进行进一步处理。但无论我用unsafeWindow.listener还是window.listener,都无法触发控制台我模拟扔出的error。这是为什么?以下是脚本信息。
```
// ==UserScript==
// @name         错误捕获脚本
// @namespace    http://tampermonkey.net/
// @version      1.0
// @description当错误信息包含“mute”时,输出“test success”
// @author       你
// @match      *://*/*
// @grant      unsafeWindow
// ==/UserScript==

(function() {
    'use strict';

    // 添加错误监听器到 unsafeWindow
    unsafeWindow.addEventListener('error', function(event) {
      // 检查错误信息是否包含“mute”
      if (event.message && event.message.includes('404')) {
            // 如果包含,则在控制台输出信息
            console.log('test success');
      }
    });
})();

```
我试过用在控制台用如下代码扔出错误。
```
fetch('https://example.com/nonexistent-resource')
.then(response => {
    if (!response.ok) {
      throw new Error('Network response was not ok');
    }
    return response.json();
})
.catch(error => {
    console.error('404', error);
});
```
还试过在控制台输入
```
// 在控制台中抛出一个错误
throw new Error('404');
```
控制台都没有反应,下断点也不运行listener内的内容。为什么呢??总感觉某个点没注意到。

李恒道 发表于 2024-10-19 11:26:39

控制台无法触发是因为环境不同,控制台抛出的错误印象里不会在网页的callback触发
哥哥前边那一个问题像是异步触发错误无法接收到导致的感觉
但是我对这方面没研究帮不到哥哥....

repisal 发表于 2024-10-19 13:49:24

李恒道 发表于 2024-10-19 11:26
控制台无法触发是因为环境不同,控制台抛出的错误印象里不会在网页的callback触发
哥哥前边那一个问题像是 ...

那我想实现控制台错误用油猴脚本处理,如何实现呢?

李恒道 发表于 2024-10-19 14:13:56

repisal 发表于 2024-10-19 13:49
那我想实现控制台错误用油猴脚本处理,如何实现呢?

理论上来说感觉没办法
除非tryCatch包裹一下然后由油猴进行回调

repisal 发表于 2024-10-20 03:54:50

李恒道 发表于 2024-10-19 11:26
控制台无法触发是因为环境不同,控制台抛出的错误印象里不会在网页的callback触发
哥哥前边那一个问题像是 ...

他自己的网页有问题。不开脚本的情况下,都能报错。报几个404 resource的错误,某一个错误之后网页就直接卡住不能动了。

李恒道 发表于 2024-10-20 11:05:05

repisal 发表于 2024-10-20 03:54
他自己的网页有问题。不开脚本的情况下,都能报错。报几个404 resource的错误,某一个错误之后网页就直接 ...

我明天想一下哥哥
今天有点事
页: [1]
查看完整版本: 油猴如何根据console上的错误信息,运行某方法