Greasemonkey - 替换javascript src以加载自定义JS而不是页面之一

And*_*uis 4 javascript greasemonkey

在.js文件中有特定的变量网页.我想重写要加载Greasemonkey的URL,但仍然没有任何结果.我使用的代码是:

window.addEventListener(
    'load', 
    function() { 
        allTextareas = document.getElementsByTagName('script');
        for (thisTextarea in allTextareas) {
            if( allTextareas[thisTextarea].getAttribute('src') == 'some url.js' ){
                 //allTextareas[thisTextarea].setAttribute('src', 'http://my custom url.js');   


            }
        }

     },
    true);
Run Code Online (Sandbox Code Playgroud)

但它不起作用.你能帮助我,或者告诉我一种在特定页面上编辑JS文件的方法.

Bro*_*ams 5

一些事情,先轻松一下......

(1)在GM中,你不能以这种方式迭代集合. 所以代替:

for (thisTextarea in allTextareas) {
    if (allTextareas[thisTextarea].getAttribute('src') == 'some url.js') {
Run Code Online (Sandbox Code Playgroud)


你必须使用:

for (var J = allTextareas.length - 1;  J>=0;  --J) {
    if (allTextareas[J].getAttribute('src') == 'some url.js') {
    etc.
Run Code Online (Sandbox Code Playgroud)


(2)当Greasemonkey触发时,这些脚本已经加载.重写脚本标记源可能不会做任何事情,除非导致操作不稳定.

阻止这些脚本加载,然后使用GM重写它们src- 或者更好的是,只需<script>用你想要的JS 创建新标签.

要阻止这些脚本,您需要一个新的加载项.这里有四个可以完成这项工作......最好,但最具侵入性,首先:

  1. RequestPolicy
  2. Adblock Plus
  3. NoScript的
  4. YesScript

所有这些附加组件都具有降低您对错误脚本/站点/闪存的漏洞以及加快页面加载的好处.