【问题标题】:Is there a way to stop a JS process through injected JS?有没有办法通过注入的 JS 来停止 JS 进程?
【发布时间】:2020-12-31 09:30:18
【问题描述】:

有一个网站我需要定期检查,但其中编写了某些 JS 函数,这些函数比其他任何东西都更美观,结果是它无缘无故地占用了我的 CPU,更不用说它了当我需要它尽快加载时,增加 1-2 秒的时间让 DOM 准备好。

例如,网站在其上显示多个元素,每个元素都在其自己的包装中。每个元素都有一个标题,可以长也可以短。因此,它不仅让标题继续运行并被边框截断(因为根据原始 CSS 隐藏了溢出),它解析所有标题,然后修剪它们,在末尾添加一个省略号。现在,这当然是纯粹的审美,因为您仍然无法访问被剪切的标题部分,所以如果您只是让它在隐藏溢出的“后面”被剪切掉也是一样的。另一方面,必须处理每个标题元素(有时屏幕上一次甚至可能有 100 个元素)会占用大量时间和资源。

还有其他几个例子,比如这个。我的问题是:有什么方法可以在我这边注入一些 JS 来覆盖或取消像我所描述的那样影响标题的功能?

附:有问题的网站也使用 jQuery。我不知道这个细节是否有什么不同。

【问题讨论】:

  • 是的。不,也许。这取决于执行此操作的代码的结构。一般来说,注入脚本总是有可能完全接管页面,只是从“简单地覆盖公共方法”到“重新编码整个页面功能”的各种难度。
  • 您如何“定期检查”?你是用F5加载的吗?或者您是否有另一个页面在其他站点上执行类似$.get 的操作?什么是“你这边”?
  • 您是在问如何使用text-overflow: ellipsis; 删除所有无意义的 javascript,以便更快地加载页面(或其他人的页面)?

标签: javascript jquery css javascript-injection


【解决方案1】:

你不能“停止一个 JS 进程”本身(你注入的 javascript 将在同一个进程中运行),但你可以干扰它。

找到一个执行您想要停止的事情的函数,然后用一个空函数覆盖它:

some.object.in.the.other.code.doSomething = function() {}

请注意,您需要确保在执行其他脚本之前进行代码注入。如果这不可行,您将不得不在调用堆栈中找到一些函数,该函数将在您注入的脚本之后执行。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-03-28
    • 2020-03-29
    • 1970-01-01
    • 2021-08-30
    • 1970-01-01
    • 2021-12-29
    • 2013-12-25
    • 1970-01-01
    相关资源
    最近更新 更多