2017-12-30 26 views
0

すでに完全に読み込まれているページでJavascriptを実行しようとしています。 JavaScriptをテストするにはJavascriptの参照エラーですが、ブックマークレットを使用すると動作します

、私は、ブックマークレットを作成し、ページがロードされたが、それをクリックし、それが適切に実行:

javascript:(array.find('value').__showAllRecords(event)) 

私は私はそれを送信書いているのAppleScriptでこのJavascriptを使用していました私はブックマークレットを使用していないとき、私のAppleScriptエディタで私のスクリプトを実行するとそれだけで起こる

Uncaught ReferenceError: array is not defined 
    at <anonymous>:1:1 

:クロムに、何らかの理由で、私はこのエラーを取得しています。ここに私のAppleScriptコードです:

tell application "Google Chrome" 
    execute front window's active tab javascript "array.find('value').__showAllRecords(event)" 
end tell 
+0

役に立てば幸い

tell application "Google Chrome" execute front window's active tab javascript "console.log(document.getElementById(\"test\").innerHTML)" end tell 

を実行することができます。あなたの配列はどこで定義されていますか? – cdoshi

答えて

0

スクリプトの実行後に再試行ができたときに、それが存在しないまであなたが知らないので、変数arrayは、ある時点で作成されます。

(function(){ 
 
    function trySomething(){ 
 
    try{ 
 
     array.find('value').__showAllRecords(event); 
 
     console.log("worked, stop trying"); 
 
     clearInterval(timer); 
 
    }catch(e){ 
 
     console.log("didn't work, try again",e); 
 
    } 
 
    } 
 
    var timer = setInterval(trySomething,1000); 
 
}()) 
 

 
//create the array object some time in the future (not actually an Array type) 
 
//this is not part of your script but would be created by the page 
 
//at some point 
 
setTimeout(
 
()=>window.array={find:x=>({__showAllRecords:x=>x})} 
 
    ,6000 
 
)

0

残念ながら、AppleScriptではデフォルト以外のグローバルにアクセスできません。スレッドを参照してくださいhttps://bugs.chromium.org/p/chromium/issues/detail?id=543437

しかし、あなたができることは、divのinnerHTMLとして配列を設定し、applescriptから値を取得することです。従って、例えば。これが私のdiv <div id="test">[1,2,3]</div>である、あなたは、これは私が配列も同様に、ブックマークレットで定義されていません取得しています

+0

これは役に立つかもしれませんが、問題は私が開発していないサイトでこれを実行しようとしていることです。基本的にマクロを作成しようとしているので、配列がどこに定義されているのかわかりません。何か案は? –

+0

私がお勧めするのは、applescriptがページ変数に直接アクセスできないため、DOMから情報を取得しようとすることです – cdoshi

関連する問題