web-dev-qa-db-ja.com

「WebページでJavaScriptを実行する」のiOS 12ショートカットセットアップの質問

JavaScriptを中心としているため、これがこの質問の正しい場所になることを願っています。新しい iOS 12ショートカットアプリ では、ワークフローを作成できます。私は単純にWebページを起動し、ユーザー名とパスワードを入力して、送信ボタンをクリックするようなものを作成したい...

_document.myForm.username.value = 'myUsername';
document.myForm.password.value = 'myPassword';
document.getElementById('loginSubmit').submit();
_

しかし、そこまで行く前に、alert(1);を実行したいだけです。それを実現させることはできません。以下にこのエラーメッセージが表示されます...

ショートカットがURLからSafari Webページに変換できなかったため、WebページでJavaScriptを実行できませんでした。

enter image description here

それが何を意味するのか分かりません。これの使い方に関する情報やチュートリアルを見つけることができませんでした。 JavaScriptを実行する方法を知っている人はいますか?ありがとう!

6
gfrobenius

最初に知っておくべきことは、ドキュメントがここにあることです: https://support.Apple.com/guide/shortcuts/welcome/ios

問題は、「WebページでJavascriptを実行」には「Safari Webページ」と呼ばれる入力が必要ですが、「URLを開く」では、Safariでページを表示しているURLを開いた結果のみが出力されるためです。 「Safari Webページ」アイテムを提供するには、Open URLが必要です。

私がそれを見つけた唯一の方法は、ショートカットを「共有拡張機能」として使用することです

  1. ワークフローでURLアイテムを削除します
  2. アイコンをタップしてショートカット設定ページに移動します 設定アイコン
  3. 「共有シートに表示」をタップします
  4. [許可されたタイプ]セクションで、リストの一番下にあるURLのみを選択します。
  5. 最後にサファリに移動し、目的のURLを開いて共有ボタンをタップします。これが初めての場合は、「ショートカット」セクションをアクティブにする必要があります。一番下のリストで最後に移動して「詳細」をタップします、下にスクロールして[ショートカット]を選択します。その後、ショートカットオプションが表示されます。それをタップしてショートカットを選択すると、ページでJavaスクリプトが実行されます。

「Webページでjavascriptを実行」の出力を使用して、1つのアラートで結果を表示するなど、何かを行う必要があることに注意することが重要です。

4
Abraham Soto

「WebページでJavaScriptを実行」アクションには、「Safariのアクション拡張機能としてショートカットを実行する場合にのみ使用できることを示すショートカットのSafari Webページアイテム」というメモがあります。

そのため、悲しいことに、URLを起動してからJSを実行するアクションをチェーン化することはできません。 URLにアクセスして、共有シートからアクションを実行する必要があります。

2
user85303

Safariアクションでは、アクティビティを起動するときに、Safariが目的のページに開かれている必要があります。ただし、別の要素を使用して簡単にこれを実現できます。

あなたの技術レベルがわからないので、これらのいずれかが既に知っているものである場合は謝罪しますが、あなたと将来の参照者のために、ここにハウツーがあります。

まず、Mac/PCブラウザーで目的のページに移動し、開発者ツールを開きます。私はFirefox Developer Editionを使用していますが、SafariとChromeがあります。MacOSSafariを使用している場合は、最初にSafariの[設定]メニューを開き、[開発者オプション]を確認して再起動します。

開発者ツールが開いたら、[ネットワーク]タブ/ペインに切り替えます。各ページの読み込み時にログをクリアするオプションを見つけてオフにします。このペインを開いたままにして、フォームに入力し、ゴミ箱を押してネットワークログをクリアしてから、フォームを送信します。これで、フォーム送信のHTTPリクエストがリストの最初または唯一のものになります。

フォーム送信の行を選択し、リクエストヘッダーを確認します。リクエストメソッド、リクエストURL、およびフォームで送信されたすべてのキーと値のペアが必要です。

ショートカットアプリに戻り、URL要素を追加して、リクエストURLと同じURLを指定します。このURL入力要素を「URLのコンテンツを取得」アクション要素にチェーンし、「詳細」ドロワーを開きます。要求ログに追加のヘッダーがある場合は、[新しいヘッダーを追加]をタップしてさらに追加できます。 Request-TypeをMethodフィールドに一致させ、Request Bodyとして「Form」を選択してから、リクエストのすべてのキーと値を追加します。

とにかく、それだけです。

これをSet Variableにチェーンしてから、IFブロックを使用して、ログインが成功したかどうかをテストします。成功した場合は、「現在ログインしています。」という結果を表示し、失敗した場合は、応答をデバッグできるように変数を表示します。

0
Brent Foxwell