remove-debugger

移除 eval 和 Function 中的 debugger 语句

您需要先安装一个扩展,例如 篡改猴Greasemonkey暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴Userscripts ,之后才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。

您需要先安装用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name            remove-debugger
// @namespace       https://github.com/pansong291/
// @version         0.0.2
// @description     移除 eval 和 Function 中的 debugger 语句
// @author          paso
// @license         Apache-2.0
// @match           *://*/*
// @icon
// @grant           none
// @run-at          document-start
// ==/UserScript==

;(function () {
  'use strict'
  const oEval = window.eval
  const oFunction = window.Function
  const handleArgs = (args, last) => {
    if (!args?.length) return
    const ind = last ? args.length - 1 : 0
    if (!args[ind]?.replaceAll) return
    args[ind] = args[ind].replaceAll(/\bdebugger\b/g, ';/*debugger*/;')
  }
  window._original_eval = oEval
  window._original_Function = oFunction
  window.eval = new Proxy(oEval, {
    apply(target, thisArg, argArray) {
      handleArgs(argArray, false)
      return target.apply(thisArg, argArray)
    }
  })
  window.Function = new Proxy(oFunction, {
    apply(target, thisArg, argArray) {
      handleArgs(argArray, true)
      return target.apply(thisArg, argArray)
    },
    construct(target, argArray, newTarget) {
      handleArgs(argArray, true)
      return new target(...argArray)
    }
  })
  oFunction.prototype.constructor = window.Function
}())