阻止外部JavaScript文件
我正在构建一个用户脚本,并试图阻止从HTML代码加载的外部JS脚本(ckeditor.JS) 使用“beforescriptexecute”应该很容易,但有一个问题:站点使用是js脚本的一种缓存 让我向您展示HTML代码和自定义脚本标记:阻止外部JavaScript文件,javascript,greasemonkey,userscripts,Javascript,Greasemonkey,Userscripts,我正在构建一个用户脚本,并试图阻止从HTML代码加载的外部JS脚本(ckeditor.JS) 使用“beforescriptexecute”应该很容易,但有一个问题:站点使用是js脚本的一种缓存 让我向您展示HTML代码和自定义脚本标记: <script type="text/rocketscript" data-rocketsrc="ckeditor/ckeditor.js"></script> 由于标记为“custom”“beforescriptexecute”
<script type="text/rocketscript" data-rocketsrc="ckeditor/ckeditor.js"></script>
由于标记为“custom”“beforescriptexecute”事件无法停止ckeditor.js的运行
您知道如何仅阻止此脚本(从我的userscript)?尝试以下操作:
document.querySelector("script[data-rocketsrc='ckeditor/ckeditor.js']").remove()
有多种方法可以解决这个问题。我要提到:
- 页面加载后销毁编辑器
- 为ckeditor启用切换源代码按钮(是,这是可能的)
- 篡改cloudflare的缓存
{
"url": "http://pagebin.com/ckeditor/ckeditor.js",
"contents": "/*script code here*/",
"version": "0.1.33",
"ctime": 1471875453444,
"stime": 1471875453444,
"ttl": 604800000,
"meta": [
null,
null,
null,
"200"
]
}
您只需将内容设置为空字符串:
// ==UserScript==
// @name Disable cloudflare cached script
// @namespace util
// @description Prevents script from being used from cache. It can still be loaded normally.
// @include http://pagebin.com/
// @version 1
// @grant none
// @run-at document-start
// @author http://stackoverflow.com/a/39082174/607407
// ==/UserScript==
var ckeditorURL = "CLOUDFLARE::http://pagebin.com/ckeditor/ckeditor.js";
var json = JSON.parse(localStorage[ckeditorURL]);
json.contents = "// nothing here, move along";
localStorage[ckeditorURL] = JSON.stringify(json);
结果:
所以这是一个你想使用JavaScript禁用的插件?不,我可以使用插件禁用脚本,但我想从Userscript/Greasemonkey脚本中执行。以脚本使用/需要的方式定义一个不可配置的全局;可能是
Object.defineProperty(窗口,“CKEditor”,{value:{})
。。。这将阻止脚本工作,无论它如何运行loaded@dandavis你能给我举个例子吗?我试过了,但似乎不起作用。这里是源页面:全局是CKEDITOR
;我猜错了。可悲的是,它不起作用,这是一个有问题的网页:我对它投了更高的票,因为这是一个好主意,但你真的感到羞耻,伙计,它真的不起作用。