Javascript 删除或阻止select Java脚本的Greasemonkey脚本
我试图创建一个脚本来删除页面上的另一个脚本,但未成功 页面加载了2个我不想执行的脚本:Javascript 删除或阻止select Java脚本的Greasemonkey脚本,javascript,greasemonkey,Javascript,Greasemonkey,我试图创建一个脚本来删除页面上的另一个脚本,但未成功 页面加载了2个我不想执行的脚本: <div id="myindex"> <div class="wrap"> <div id="idone"></div> <div id="idtwo"></div> <script type="text/javascript"></script> <script type
<div id="myindex">
<div class="wrap">
<div id="idone"></div>
<div id="idtwo"></div>
<script type="text/javascript"></script>
<script type="text/javascript"></script>
<script type="text/javascript"></script> //To Remove
<script type="text/javascript"></script> //To Remove
</div>
</div>
如何阻止这些脚本运行?这在新的Greasemonkey@run at指令中非常有效 下面是一个用户脚本示例: 重要引语: 此用户脚本将在文档开头运行,如 脚本式的,它甚至在得到任何HTTP响应之前运行 非常适合重定向 它展示了如何从网站中删除恶意JS。 以下是完整的脚本示例:
// ==UserScript==
// @name editscript
// @version 0.0.1
// @namespace example@example.com
// @include http://*
// @run-at document-start
// ==/UserScript==
var changed = 0; // script need to be edited with
window.addEventListener('beforescriptexecute', function(e) {
///for external script:
src = e.target.src;
if (src.search(/bad\.js/) != -1) {
changed++;
e.preventDefault();
e.stopPropagation();
append(NewScript1);
};
///for inline script:
if(e.target===document.getElementsByTagName("script")[0]){
changed++;
e.stopPropagation();
e.preventDefault();
//todo
}
//tips: you could also run a regex search for the e.target.innerHTML
//if the position of the inline script is not fixed.
///when done, remove the listener:
if(changed == 2) window.removeEventListener(e.type, arguments.callee, true);
}, true);
////// append with new block function:
function append(s) {
document.head.appendChild(document.createElement('script'))
.innerHTML = s.toString().replace(/^function.*{|}$/g, '');
}
////////////////////////////////////////////////
function NewScript1(){
/* insert new block here, like: */
function load_good_stuff(){
/* we still got it!!
* only without the evil thing.
*/
}
};
这与新的Greasemonkey@run-at指令配合使用非常好 下面是一个用户脚本示例: 重要引语: 此用户脚本将在文档开头运行,如 脚本式的,它甚至在得到任何HTTP响应之前运行 非常适合重定向 它展示了如何从网站中删除恶意JS。 以下是完整的脚本示例:
// ==UserScript==
// @name editscript
// @version 0.0.1
// @namespace example@example.com
// @include http://*
// @run-at document-start
// ==/UserScript==
var changed = 0; // script need to be edited with
window.addEventListener('beforescriptexecute', function(e) {
///for external script:
src = e.target.src;
if (src.search(/bad\.js/) != -1) {
changed++;
e.preventDefault();
e.stopPropagation();
append(NewScript1);
};
///for inline script:
if(e.target===document.getElementsByTagName("script")[0]){
changed++;
e.stopPropagation();
e.preventDefault();
//todo
}
//tips: you could also run a regex search for the e.target.innerHTML
//if the position of the inline script is not fixed.
///when done, remove the listener:
if(changed == 2) window.removeEventListener(e.type, arguments.callee, true);
}, true);
////// append with new block function:
function append(s) {
document.head.appendChild(document.createElement('script'))
.innerHTML = s.toString().replace(/^function.*{|}$/g, '');
}
////////////////////////////////////////////////
function NewScript1(){
/* insert new block here, like: */
function load_good_stuff(){
/* we still got it!!
* only without the evil thing.
*/
}
};
也许这也很有趣?也许这也很有趣+1.现在对FF和Greasemonkey有效-在那里它成为一个很好的解决方案。不适用于Chrome,也可能不适用于Opera。很好的链接,不显示任何内容->始终将重要信息放入您的answer@sjngm修正了+1。现在对FF和Greasemonkey有效-在那里它成为一个很好的解决方案。不适用于Chrome,也可能不适用于Opera。很好的链接,不显示任何内容->始终将重要信息放入您的answer@sjngm修好了