0

このスクリプトは、ホストによって自動的に私の Web サイトに読み込まれます。

<!-- [redacted] Analytics Code -->
<script type="text/javascript" src="http://[redacted]/count.php"></script>
<!-- End Of Analytics Code -->

id、name、class などの識別タグがないため、私の質問は、「javascript を使用して、これらを使用せずに src を変更するにはどうすればよいですか?」ということです。ウェブサイトの速度が低下しているため、src を空にしたいと考えています。これが目標になります:

<script type="text/javascript" src=""></script>

または、script タグ全体を削除しても問題ありません。

4

3 に答える 3

0

sLaks が述べたように、script タグの src 属性を変更しても効果はありません。代わりに、最初のスクリプト ファイルにコード全体を保存することをお勧めします。以下のようなモジュール パターンがあることを確認してください。

var yourModule = (function(){
    function yourModule(){
       ...
    }
    //your helper functions here
    function somehelper(){
        ....
    }
    yourModule.prototype.someFun1 = function(){ .. };
    yourModule.prototype.someFun2 = function(){ .. };
    return yourModule;
}());

例として、このパターンを取り上げました。利点は、スクリプトを変更するだけでは機能しないため、スクリプト全体を無効にする場合です。

var xyz= new yourModule();
// start using xyz
// When you do not want yourModule anymore  
yourModule = function(){ return false; } or null;

その機能をクリアします。

次に、以下のコードを使用してスクリプトを再度ロードします

 var handleRequest = function( ) { //!! set up the handleRequest callback

 if(this.status != undefined) {

     /* do something with the status code here */

 }

 if(this.readyState == 4) {

      var script = document.createElement("script") ;
          script.setAttribute("type","text/javascript") ;
      var text = document.createTextNode(this.responseText) ;
          script.appendChild(text) ;

      var head = document.getElementsByTagName("head")[0] ;
          head.insertBefore(script,head.firstChild) ;

 }

 } ;

 var request ; //!! supposing you have a way to get a working XHR Object

 //.. set the XHR Object

 request.open("GET",url,true) ;
 request.overrideMimeType("text/javascript") ;
 request.onreadystatechange = handleRequest ;
 request.send(null) ;

スクリプトの読み込みは、さまざまな専門家によるさまざまな質問で何度も回答されています。AJAX を介して読み込みたい場合の解決策を次に示します (動的にスクリプトを作成する: readyState は決して "完了" しません) 。

于 2013-08-20T03:26:03.730 に答える
0
document.getElementsByTagName("script")[0].src = "location";

括弧document.getElementsByTagName("script")を使用してインデックス番号で選択できるすべてのスクリプトタグの配列を返すため

于 2013-08-20T02:51:35.687 に答える
0

削除するには:

var myScript = document.getElementsByTagName("script")[0]; // or whatever index
myScript.parentNode.removeChild(myScript); // bye bye

しかし、SLaks の言うことはおそらく正しいでしょ

それは役に立ちません。JS が実行されるまでに、ブラウザーは既にそのスクリプトをダウンロードして実行しています。

于 2013-08-20T02:54:04.527 に答える