此脚本由主持人自动加载到我的网站上:
<!-- [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>
甚至删除整个脚本标记也是可以接受的。
答案 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")加载它,这就是我喜欢的解决方案