2016-08-17 6 views
2

Ich baue ein UserScript und versuche, ein externes JS-Skript (ckeditor.js) zu blockieren, das aus dem HTML-Code geladen wurde.Blockieren von externen JavaScript-Dateien

Es sollte mit „beforescriptexecute“, aber es gibt einen Haken einfach sein: Der Einsatz vor Ort RocketLoader die eine Art Cache für js Skripte ist.

Lassen Sie mich Ihnen den HTML-Code und den benutzerdefinierten Script-Tag:

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

Da den Tag "custom" "beforescriptexecute" Ereignis nicht in der Lage ist ckeditor.js vom Laufen zu stoppen.

Wissen Sie, wie ich dieses Skript nur blockieren kann (von meinem Benutzer) ?

+0

Das ist also ein Addon Sie wollen um JavaScript zu deaktivieren? – PHPglue

+0

Nein Ich kann das Skript mit dem Addon deaktivieren, aber ich möchte es aus einem Userscript/Greasemonkey Script machen. –

+0

Definieren Sie ein nicht konfigurierbares Globales in der Art und Weise, die das Skript verwendet/benötigt; vielleicht 'Object.defineProperty (Fenster," CKEditor ", {Wert: {}})' ... das verhindert, dass das Skript funktioniert, egal wie es geladen wird – dandavis

Antwort

2

Probieren Sie etwas wie:

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

Leider hat es nicht funktioniert, hier ist die Webseite in Frage: http://pagebin.com/ –

+0

Ich habe dies aktualisiert, weil es ist eine gute Idee, aber Schande über dich Mann, es funktioniert wirklich nicht. –

0

ist es mehrere Möglichkeiten, um dies zu realisieren. Ich werde sie erwähnen:

  • zerstören ckeditor nach Seite geladen
  • Toggle Source Taste für ckeditor aktivieren (ja, es ist möglich)
  • Tamper mit cloudflare Cache

habe ich schon diese ersten beiden, also entschied ich mich, die dritte Option zu versuchen. Wenn Sie `local Inhalte in Konsole drucken, können Sie sehen, wie dieser Cache funktioniert:

image description

Für jedes Skript, ein Eintrag ist. Die JSON-Struktur sieht wie folgt aus:

{ 
    "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" 
    ] 
} 

Alles, was Sie brauchen, ist der Inhalt zu leeren String zu setzen:

// ==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); 

Ergebnis:

image description