2017-11-18 12 views
0

I AppleScriptエディタで次のコードスニペットを使用してJavaScriptを使用することはできません。JavaScriptを使用してAppleScriptでJavaScriptを使用することはできません "document.getElementById( 'theID')。value = 'item1';"

do JavaScript "document.getElementById( 'theID')。value = 'item1';"最初のウィンドウ他の人々は、これが動作するようになったいくつかの理由

tell application "Google Chrome" 
    open location "https://www.randomwebsite.com" 
    set theScript to "document.getElementById('term_input_id').value ='Spring 2015';" 
do JavaScript theScript in current tab of first window 
end tell 

が、ノートの現在のタブでは、これは私が呼び出したい正確なJavaScript関数です!

誰かが私が構文エラーを取り除く方法を知っています。行の終わりなどが予想されますが、識別子が見つかりました。 (AppleScriptは、上記のコードでJavaScriptを強調表示しています)

答えて

0

あなたは「何らかの理由で他の人がこれを手に入れました」と言っていますが、「構文エラーがあります。あなたがスクリプトエディタでエラーなしでコンパイルすることさえできないのであれば、明らかに誰かがそのコードをGoogle Chromeで動作させる方法はまったくありません!

  1. はサファリではなく、Google Chromeのためのものですdo JavaScript構文。 Google Chromeの場合はexecute javascriptですが、それを変更してもコードは修正されません。その後、 "Syntax Error Expected line of endlineなどのエラーが発生しましたが、クラス名が見つかりました。"ハイライトtab
  2. Google ChromeのAppleScript Dictionaryを見ると、current tabactive tab、およびのコードが修正されない修正がサポートされていません。「AppleScriptエラー」でエラーが発生しました。Google Chromeにエラーが発生しました:アプリケーション「Google Chrome」をタイプ指定子にできません。ハイライトexecute javascript theScript in active tab of front window

次に、間違いなくコンパイルするには、次に何が必要ですか?次の再加工コードには、元のコードからエラーなくコンパイルするために必要な変更があります。

tell application "Google Chrome" 
    open location "https://www.randomwebsite.com" 
    set theScript to "document.getElementById('term_input_id').value = 'Spring 2015';" 
    execute active tab of front window javascript theScript 
end tell 

しかし、それはエラーなしでコンパイルできるからといって、必ずしもそれが問題なく動作するという意味ではありません!

ときopen location "https://www.randomwebsite.com"コマンド実行し、コードの行は、それがロードを完了したために、したがって、スクリプトが失敗する可能性がターゲットウェブページに関係なく実行することができ、次の。

あなたはそれがスクリプトの残りの部分に進む前に完了するのopen location ...コマンドを待つために、適切なコードを追加する必要があります。

インターネットを検索するには、ページの読み込み、このサイトはそのサイトでは動作しないことがありで動作しますが1つの所与の道を終えたのを待つためのさまざまな方法を見つけることができます。したがって、対象のWebサイトで動作するものをテストする必要があります。GoogleのChromeで動作するはずの一般的な方法の

一つは次のとおりです。

repeat until (loading of active tab of front window is false) 
    delay 0.2 -- # The value of the 'delay' command may be adjusted as appropriate. 
end repeat 

だから、あなたの手直しコードが今のように見える:

tell application "Google Chrome" 
    open location "https://www.randomwebsite.com" 
    repeat until (loading of active tab of front window is false) 
     delay 0.2 
    end repeat 
    set theScript to "document.getElementById('term_input_id').value = 'Spring 2015';" 
    execute active tab of front window javascript theScript 
end tell 

もちろんこれは、という意味ではありませんすべてが問題なく動作するはずです。必要な場合には、適切なエラーチェックと処理を追加する必要があります。

+0

注:「最初のウィンドウ」を持っている間に、私はそれを個人的な好みとして「フロントウィンドウ」に変更しましたが、どちらの方法でも_code_をテストするのは無関係で、同じ結果が得られます。 – user3439894

関連する問題