2016-06-09 13 views
0

In Chrome JavaScript-Konsole, kann ich folgendes eingeben:Wie kann ich dem Fensterobjekt in Chrome mithilfe von Applescript eine Eigenschaft hinzufügen?

window.myVar = "myValue"; 

ich dann myVar aus dem Fenster Kontext zugreifen können, wo es "myValue" zurückgibt. Ausgezeichnet.

Allerdings, wenn ich die folgenden in Applescript tun:

tell application "Google Chrome" 
    execute front window's active tab javascript "window.myVar = 'myValue';" 
end tell 

Diese Anweisung ausgeführt wird ausgeführt, wenn das Skript aufgerufen wird. Es werden keine Fehler ausgegeben und das Chrome-Fenster existiert. Aber wenn ich versuche, aus dem Fensterkontext auf zu verweisen, wird nur undefined zurückgegeben. Zu Testzwecken habe ich nach dieser Deklaration eine Alert-Anweisung hinzugefügt - die Warnung wird ausgelöst, aber myVar bleibt deaktiviert.

Jetzt, in Safari, funktioniert do JavaScript mit dem gleichen Code, als ob ich den Code direkt in die Konsole eingegeben hätte - gibt einen Wert zurück.

Warum löst Chrome diese Anweisungen nicht aus, wenn es von Applescript aufgerufen wird, wenn es manuell ausgeführt werden kann? (Chrome 51.0.2704.84, OS X 10.11.5)

+0

Warum sollte Chrome selbst Apple Script kennen? o_0 Sie denken, dass die Leute bei Google eine Menge Zeit damit verbracht haben, es zu verstehen? Es funktioniert nicht mit beliebigen Programmen ... –

+0

Google Chrome bietet ein Wörterbuch für die Verwendung mit AppleScript als .SBF, das im Skript-Editor angezeigt werden kann. Chrome ist skriptfähig - es führt dieses JavaScript nur anders aus, als wenn ein Benutzer es eingegeben hätte, und ich möchte verstehen, warum. – Rydash

Antwort

0

Ich entdeckte einen Workaround. Vielleicht nicht die beste sein, aber die folgende Zeile führt die JavaScript ich im Sinne habe, während auch Eigenschaften von window Einstellung:

tell front window of application "Google Chrome" 
    set URL of active tab to "javascript:" & window.myVar = "myValue" 
end tell 

diese verwenden, myVar richtig kehrt "myValue". Nett.