Überschreiben eines Teils einer anonymen google.com-Funktion

9

Wenn eine JavaScript-Funktion anonym erklärt wird, gibt es eine Möglichkeit, sie oder Teile davon zu überschreiben?

Ich versuche, die sofortige Suche von google.com zu stoppen, indem ich die Auf- und Abwärtspfeile entschlüssele, um durch Ihre Suchrankings zu navigieren. Ich habe festgestellt, was ich für den problematischen Codeabschnitt halte. Die Tastencodes 38 und 40 sind für die Abwärts- und Aufwärts-Tasten.

%Vor%

Das Problem ist, dass dies Teil einer Funktion namens Sb = function (a) {} ist, die innerhalb von etwa einer dreitausend Zeilen anonymen Funktion liegt. Es gibt eine ähnliche Frage auf SO hier , dass der Autor am Ende auf eine hacky Art gearbeitet hat, die nicht auf mich zutrifft. Ich weiß, dass ich die sofortige Suche abschalten kann, aber ich mag es, ich kann es einfach nicht ertragen, dass meine Pfeiltasten nicht mehr funktionieren.

LÖSUNG:

Am Ende habe ich eine Chrome-Erweiterung geschrieben, um die Pfeiltaste nach oben / unten zu scrollen. Ich habe den folgenden Code verwendet. Danke an Raze und Mofle.

%Vor%     
mrtsherman 17.11.2010, 03:27
quelle

4 Antworten

3

Sie können eine anonyme Funktion in einer anderen anonymen Funktion nicht überschreiben. Sie können keine Teile einer bestehenden Funktion ändern, Sie müssen eine neue Funktion erstellen und sie bei Bedarf anhängen, obwohl Sie die Quelle einer Funktion erhalten, sie manipulieren und eine neue Funktion aus der Quelle erstellen können. p>

Ich habe hier zwei Vorschläge für dieses Problem, die keine Neudefinition der Funktionen beinhalten.

  1. Fügen Sie in der Erfassungsphase einen Ereignis-Listener für das Eingabetextfeld hinzu und brechen Sie das Ereignis ab, wenn keyCode auf UP oder DOWN steht
  2. Erstellen Sie ein überlagertes Textfeld, in das Sie tatsächlich Text eingeben, und geben Sie alle Ereignisse außer UP-Taste und DOWN-Taste an das darunter liegende Textfeld weiter.
Raze 28.04.2011, 07:41
quelle
2

Das können Sie leicht tun, indem Sie die Ereignisse der Pfeiltasten aufzeichnen und verhindern, dass sie sprudeln.

%Vor%

Getestet und funktioniert auf google.com

    
Sindre Sorhus 04.05.2011 20:09
quelle
0

Entfernen Sie alle Ereignis-Listener aus dem Element, indem Sie sie durch einen eigenen Klon ( node.parentNode.replaceChild(node.cloneNode(true), node) ) ersetzen und anschließend eine manuell geänderte Version des Google-JavaScript-Codes anwenden ( document.documentElement.appendChild(document.createElement("script")).src=" location of your modified script " ).

    
Eli Grey 30.04.2011 01:38
quelle
-1

Versuchen Sie einen harten Kern zu ersetzen, bevor die Funktion ausgeführt wird.

%Vor%

Wahrscheinlich wird es funktionieren

    
brunoais 04.05.2011 16:57
quelle