2011-01-09 8 views

Odpowiedz

2

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:

  1. Określić identyfikator użytkownika. Można go zobaczyć na stronie Rozszerzenia (chrome://extensions/):

    Getting script's ID

  2. Przełącz na kontekst skryptu, klikając w menu kontekstowym na dole konsoli:

    Switch to userscript scope

    Note identyfikator (pfnbaeafniclcjhfkndoploalomdmgkc) jest taki sam, jak ten wymieniony na stronie rozszerzeń.

  3. 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ął. :

    Accessing Script vars after script is done

  4. 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.

    (Click for a larger image)
    Userscript paused at a breakpoint

  5. Z userscript zatrzymał się w odpowiedniej przerwania, można zobaczyć, ale nie zmienić wartości globalnych, od konsoli.

    (Click for a larger image)
    Can't change from console

  6. Ale można zmienić wartość z debuggera:

    (Click for a larger image)
    Setting the value

+1

Zmieniono moją odpowiedź, ponieważ jest to tak szczegółowe, jak 5j można zrozumieć ;-) – Kugel

1

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

+1

Nie działa. Prawdopodobnie dlatego, że każdy usercript jest osadzony w annonimowej funkcji. – Kugel

+0

Myślę, że próbujesz uzyskać dostęp do lokalnego var, spróbuj zalogować się zamiast tego za pomocą 'console.log (var)' –

0

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