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

时间:2011-02-22 00:07:43

标签: 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);

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

1 个答案:

答案 0 :(得分:5)

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

(1)在GM中,you cannot iterate collections就是这样。 所以代替:

for (thisTextarea in allTextareas) {
    if (allTextareas[thisTextarea].getAttribute('src') == 'some url.js') {


您必须使用:

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


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

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

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

  1. RequestPolicy
  2. Adblock Plus
  3. NoScript
  4. YesScript
  5. 所有这些附加组件都可以降低您对糟糕脚本/网站/闪存的漏洞,并加快页面加载速度。