2016-08-17 3 views
2

Я создаю UserScript, и я пытаюсь заблокировать внешний JS-скрипт (ckeditor.js), загруженный из HTML-кода.Блокировка внешнего файла JavaScript

Это должно быть легко с «beforescriptexecute», но есть загвоздка: Использование RocketLoader сайт, который является своего рода кэш для JS скриптов.

Позвольте мне показать вам HTML код и пользовательский тег сценария:

<script type="text/rocketscript" data-rocketsrc="ckeditor/ckeditor.js"></script> 

Поскольку тег «обычай» «beforescriptexecute» событие не может остановить ckeditor.js от бега.

Знаете ли вы, как я могу заблокировать только этот скрипт (из моего аккаунта) ?

+0

Так что это аддон вы хотите отключить, используя JavaScript? – PHPglue

+0

Нет Я могу отключить скрипт с помощью аддона, но я хочу сделать это из скрипта UserScript/Greasemonkey. –

+0

определяет неконфигурируемый глобальный способ использования/потребностей скрипта; возможно, 'Object.defineProperty (window,« CKEditor », {value: {}}). ... это предотвратит работу скрипта независимо от того, как он загружен. – dandavis

ответ

2

Try что-то вроде:

document.querySelector("script[data-rocketsrc='ckeditor/ckeditor.js']").remove() 
+0

К сожалению, это не сработало, вот веб-страница: http://pagebin.com/ –

+0

Я поддержал это, потому что это хорошая идея, но стыдно за вас, человек, это действительно не работает. –

0

Там в несколько способов обойти это. Назову их:

  • Уничтожить CKEditor после загрузки страницы
  • Включить кнопку для CKEditor Переключить Исходник- (да, это возможно)
  • тампера с кэшем в CloudFlare

я уже сделал эти первые два, поэтому я решил попробовать третий вариант. Если вы печатаете `содержимое LocalStorage в консоли, вы можете увидеть, как работает этот кэш:

image description

Для каждого сценария есть запись. Структура JSON выглядит следующим образом:

{ 
    "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); 

Результат:

image description

Смежные вопросы