在加载内容html之前,我需要为另一个脚本标记<script>
替换特定的脚本标记<script>
。我的意思是,我不想加载这个javascript,因为它是广告。
替换此 <script type='text/javascript' src='http://site.net/c/banner_s?tenant=AD&selection=5986&size=728x90&skin=bottom_middle&di=1'></script>
此 <script type='text/javascript' src='http://newsite...'></script>
否则删除标签。
这是我的代码,但这会删除所有脚本标记,我想要特定标记(之前提到过)
function stripScripts(s) {
var div = document.createElement('div');
div.innerHTML = s;
var scripts = div.getElementsByTagName('script');
var i = scripts.length;
while (i--) {
scripts[i].parentNode.removeChild(scripts[i]);
}
return div.innerHTML;
}
alert(
stripScripts('<span><script type="text/javascript">alert(\'foo\');<\/script><\/span>')
);
提前致谢
答案 0 :(得分:2)
你知道多少网址?
如果你知道所有这一切并且它不会改变:
var scripts = document.getElementsByTagName('script');
var i = scripts.length;
while (i--) {
if (scripts[i].src === "http://site.net/c/banner_s?tenant=AD&selection=5986&size=728x90&skin=bottom_middle&di=1") {
srcipts[i].src = newSrc; // Your source here
break;
}
}
如果你知道其中一些不会改变:
var scripts = document.getElementsByTagName('script');
var i = scripts.length;
while (i--) {
if (scripts[i].src.indexOf("http://site.net/c/banner_s?...") === 0) {
srcipts[i].src = newSrc; // Your source here
break;
}
}
如果整个网址可能会发生变化,您需要查看其他解决方案(ID,网页上的展示位置等)。
答案 1 :(得分:1)
如果这不是服务器端的javascript,那你就是在浪费时间。删除页面中的脚本元素是没有意义的。一旦加载了一个脚本,它就被加载了,你无法“卸载”它。除了导航到新网址之外,没有什么可以改变它。
替换脚本元素的src同样毫无意义,你也可以只加载一个新元素。替换src不会卸载脚本内容(参见上文),它只是删除元素。
如果要在页面中加载其他脚本,则必须在服务器上执行此操作。