Czy w celu debugowania można uzyskać dostęp do zmiennych usercript z konsoli w Google Chrome?Uzyskiwanie dostępu do zmiennych usercript z konsoli Google Chrome
Odpowiedz
Załóżmy, że miał userscript Chrome z tego kodu:
var userscriptVar = "I'm a global variable, userscript context.";
window.var2 = "I'm a window.scope variable, userscript context.";
console.log ("Hello from the userscript.");
dostęp do tych zmiennych userscript:
Określić identyfikator użytkownika. Można go zobaczyć na stronie Rozszerzenia (
chrome://extensions/
):Przełącz na kontekst skryptu, klikając w menu kontekstowym na dole konsoli:
Note identyfikator (
pfnbaeafniclcjhfkndoploalomdmgkc
) jest taki sam, jak ten wymieniony na stronie rozszerzeń.Teraz natychmiast móc zobaczyć i zmienić zmienną o zasięgu okna (
var2
), ale nie można zobaczyć userscript na globalny (userscriptVar
), ponieważ skrypt instancji już dawno skończony i zniknął. :Aby uzyskać dostęp i zmienić userscript zmienne, podczas gdy skrypt jest nadal aktywny, ustawić punkt przerwania w skrypcie i używać debuggera. Zobacz, jak to zrobić: this answer.
Z userscript zatrzymał się w odpowiedniej przerwania, można zobaczyć, ale nie zmienić wartości globalnych, od konsoli.
Ale można zmienić wartość z debuggera:
nuż tak. Wystarczy wpisać nazwę var i wciśnij enter aby ocenić (wykorzystanie dir(xxx)
dla obiektów)
NB: var musi być globalny zestaw na unsafeWindow
Nie działa. Prawdopodobnie dlatego, że każdy usercript jest osadzony w annonimowej funkcji. – Kugel
Myślę, że próbujesz uzyskać dostęp do lokalnego var, spróbuj zalogować się zamiast tego za pomocą 'console.log (var)' –
Co pracował dla mnie to zrobiłem zmienna globalna. tj.
var x = "Chairman Mao"; // x not accessible to chrome
x = "Chairman Mao"; // X becomes accessible to chrome via inspector
Zmieniono moją odpowiedź, ponieważ jest to tak szczegółowe, jak 5j można zrozumieć ;-) – Kugel