2011-08-07 8 views
1

サフィックスを削除したいウェブサイトのheadとbodyにCSSとjsのリンクがあります。今私は "?R = 5.6" を削除したいGreaseMonkey - JavaScript - いくつかのcssとjs refsサフィックスを削除する

<script type="text/javascript" src="http://example.com/some.js?r=5.6"></script> 
<script type="text/javascript" src="http://example.com/someother.js?r=5.6"></script> 

:このような体内の

<link rel="stylesheet" type="text/css" href="http://example.com/some.css?r=5.6" media="screen" /> 
<link rel="stylesheet" type="text/css" href="http://example.com/someother.css?r=5.6" media="screen" /> 

と、いくつかのJavaScriptのincludings:

頭の中でCSSのリンクは次のようになりますこのリンクの一部(GreaseMonkey)例えば ​​- - 私はそれを見つけて作ってそれを使用することができ、次のコードで

警告():

var cssLinks=document.getElementsByTagName("link"); 

for (var i=0;i<cssLinks.length;i++) 
{ 
    alert(cssLinks[i].href.replace(/\?r=5.6/, "")); 
} 

var scriptLinks=document.getElementsByTagName("script"); 

for (var i=0;i<scriptLinks.length;i++) 
{ 
    alert(scriptLinks[i].src.replace(/\?v=2.2.7/, "")); 
} 

しかし、私は、ソースでそれを置き換えるたいように、R = 5.6 ISN?パースされていない。 document.innerHTML、xPathなどで多くの例を試しましたが、適切な解決策が見つかりません。

お手伝いできますか? :-)

答えて

1

重要事項:通常

  1. 、あなたがそのようなクエリパラメータを、交換してください。 EG:へ

    http://example.com/someother.css?r=5.6 
    

    http://example.com/someother.css 
    

    それは効果がありません。 ?r=5.6は、実際にファイル自体の名前を変更することなく、ブラウザにファイルの最新バージョン(キャッシュされていない)を取得させるのはちょっとしたことです。


  2. 良いニュースは、あなたが実際にCSSファイルを変更した場合、EGことをされています

    http://example.com/File_1.css 
    

    へ:

    http://example.com/File_2.css 
    

    が続いてCSSルールが置き換えられます、あなたが望むように、Firefoxで。その後

    http://example.com/File_B.js 
    

    新しいJSがでを実行されません


  3. しかし、あなたが実際にJSファイル、EG変更した場合:へ

    http://example.com/File_A.js 
    

    をすべて!古いJSはまだ起動しています。両方のファイル(File_A.jsFile_B.jsは)/同じタイマーやイベントリスナーを設定し使用している場合、それは面白い効果を引き起こすかもしれない、

    function addJS_Node (text, s_URL) { 
        var scriptNode      = document.createElement ('script'); 
        scriptNode.type      = "text/javascript"; 
        if (text) scriptNode.textContent = text; 
        if (s_URL) scriptNode.src   = s_URL; 
    
        var targ = document.getElementsByTagName('head')[0] || d.body || d.documentElement; 
        targ.appendChild (scriptNode); 
    } 
    
    addJS_Node (null, "http://example.com/File_B.js"); 
    

    をしかし:

  4. だから、あなたはそうのような新しいJSを追加することができます。

    考えられる回避策:AdBlockのようなものを使用して、File_A.jsのロードを停止してください。とにかく


、ここであなたを尋ねない完全なGreasemonkeyのスクリプトがあります。
実際にどのように動作するのかについて、上記の注記を参照してください。

// ==UserScript== 
// @name   _Swap CSS and Javascript links. 
// @include   http://YOUR_SERVER/YOUR_PATH/* 
// @require   http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js 
// ==/UserScript== 

var targCSS = $("link[rel=stylesheet][href*='r=5.6']"); 

targCSS.each (function() { 
    var jThis = $(this); 
    jThis.attr ('href', jThis.attr ('href').replace (/\?r=5.6/i, '')); 
}); 

var targJS = $("script[src*='v=2.2.7']"); 

/* No workie. That is, new script will not execute. 
targJS.each (function() { 
    var jThis = $(this); 
    jThis.attr ('src', jThis.attr ('src').replace (/\?v=2.2.7/i, '')); 
}); 
*/ 
targJS.each (function() { 
    var jThis = $(this); 
    var newSrc = jThis.attr ('src').replace (/\?v=2.2.7/i, '') 

    addJS_Node (null, newSrc); 
}); 

function addJS_Node (text, s_URL) { 
    var scriptNode      = document.createElement ('script'); 
    scriptNode.type      = "text/javascript"; 
    if (text) scriptNode.textContent = text; 
    if (s_URL) scriptNode.src   = s_URL; 
    var targ = document.getElementsByTagName('head')[0] || d.body || d.documentElement; 
    targ.appendChild (scriptNode); 
} 
+0

は私がどういたしまして – fwaechter

+0

検索まさに、ありがとうございました。喜んで助けてください。 – fwaechter

+0

あなたの偉大な説明のための大きななたも:) –

関連する問題