更改没有id,name或class的脚本标记的src

时间:2013-08-20 02:50:33

标签: javascript html

此脚本由主持人自动加载到我的网站上:

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

它没有任何识别标签,如ID,名称或类,所以我的问题是&#34;如果没有这些东西用javascript我怎么改变它的src?&#34;。 我想让src变空,因为它减慢了我的网站速度。这将是目标:

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

甚至删除整个脚本标记也是可以接受的。

3 个答案:

答案 0 :(得分:0)

document.getElementsByTagName("script")[0].src = "location";

beacause document.getElementsByTagName("script")返回所有脚本标记的数组,您可以使用括号选择哪一个脚本标记

答案 1 :(得分:0)

删除它:

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

但SLaks可能正好是saying

  

这无济于事。当你的JS运行时,浏览器已经下载并执行了该脚本。

答案 2 :(得分:0)

正如sLaks提到的那样,即使你改变了脚本标签的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(来自:dynamically creating script: readyState never "complete")加载它,这就是我喜欢的解决方案