説明を見ると「Webページが入力として渡されなかったため、"WebページでJavaScriptを実行"を実行できませんでした。」とある。
そもそもこの説明の入力として渡されなかった理由が分からない。
Safariで開いているページ上で共有シートから読み込んでいるのにダメ。
アップルのユーザーガイドを熟読してもそれらしき解決方法は見当たらず…
読み込むページを変えてみたり、コードを編集したり…3時間ほどハマったのですが無事に解決できたので共有します。
開き方もコードも合っていて、ショートカットの作成が間違っていました。
この記事の目次
ショートカットアプリで「Webページなし」が出る
iPhoneのショートカットを使用するとSafariで開いているWebページでJavaScriptを実行することができ、ページのスーパーリロードなど標準の機能ではできないことが出来るようになるので便利そうだと思って使ってみたのが事の始まりでした。
2022.2.16追記
ショートカットアプリのオートメーションでWebページなしが出る時については別の記事(当ページ下部にリンクあり)に詳しく書いています。
ショートカットの作成方法
この記事を見て下さっている方はショートカットの作成自体は終わっているはずなので簡単にいきます。
- Webアクションを追加
- WebページでJavaScriptを実行
- ショートカットを編集
- ショートカットアプリを開いて+ボタンをクリック。
- +アクションを追加をクリック。
- 横にスライドしてWebを選択。
- スクロールしWebページでJavaScriptを実行を選択。
- 共有シートからショートカットを呼び出すために編集に進む。
WebページでJavaScriptを実行させるにはSafariからショートカットを開く必要があるため、続いてSafariのフッターメニュー(共有シート)にショートカットが表示されるように設定します。
- 共有シートに表示をON
- 完了して保存する
- ショートカット名の入力。
- 共有シートに表示をON。
- 共有シートタイプで「SafariのWebページ」のみを選択する。
- 完了を押して作成終了。
以上でショートカットの登録は完了。
もっと詳しくショートカットの作成方法を見たい方は関連記事をご確認下さい。
iPhoneのスーパーリロードを作った時の記事でショートカットの作り方は同じです。
関連記事
iPhone Safariでスーパーリロードする方法!キャッシュクリアの方法~リロード用ショートカットの作成まで。
スーパーリロード用のショートカットを作成するの項目へ
WebページでJavaScriptを実行する
スクリプトを実行したいサイトを開き、メニュー(共有シート)を開く。
作成したショートカットを押せばページ上でスクリプトが実行されるらしい。
- 「Webページなし」と出る
- ショートカットからも不可
が、「Webページなし」と出て実行できませんでした。
「Webページが入力として渡されなかったため、"WebページでJavaScriptを実行"を実行できませんでした。」とあるので原因を調べつくしたのですが、有力情報は見つからず…困っている方も多いようです。
何とか解決せねば。と思い早3時間。やっと動かせました。。。
「Webページなし」の解決法
どうもショートカットを作る時「Webページに対してJavaScriptを実行」を選んでいたのが間違いのようです。
これで間違いとは…最近日本語変わった?
ややこしいので画像多めで順番に説明します。
「Webページなし」が出てしまって動かないショートカットを編集します。
編集するショートカットのアイコンの右上にある…を押します。
ここがミソです!
「Webページ」に対してJavaScariptを実行となってる場合、Webページが入力として渡されないようです。
追記
執筆時はiOS14ですが、iOS15では「Webページ」に対してという項目に初めから「SafariのWebページ」という内容が入っており、問題なく動くようです。
Webページとなっている部分を押す。
「ショートカットの入力」に変更します。
ショートカットの入力を押す。
ここが「SafariのWebページ」になっていないと、Webページが入力として渡されず「Webページなし」となるのです。
上の画像のようにショートカットの入力の中身を「SafariのWebページ」にし、
ショートカットの入力が「SafariのWebページとして」になっていればOK!
やっと動きました…
実行時のアクセス許可について
JavaScriptの初回実行時にはアクセス許可が必要です。
アクセス許可の説明に"機密情報の読み取りも含まれます。"とあるので不安を煽られますが、許可しないと実行できません。こちらは悪意のあるJavaScriptでない限り、許可してもそれほど大きな問題は起こりません。
不安な方は別記事に詳しく書きましたのでご確認下さい↓。
オートメーションでWebページなしが出る時
ショートカットアプリのオートメーションでも同エラー「Webページなし」が出ることがあります。こちらについて詳しくは別の記事に書きました。
ただ色々テストした結果、オートメーションから"WebページでJavaScriptを実行"というアクションは使えないようです。
-
- 【iOS】オートメーションからは"WebページでJavaScriptを実行"は実行できない!「Webページなし」が出る…
続きを見る
まとめ
以上、iPhoneのショートカットを使いSafariでJavaScriptを実行した時にWebページなしが出てしまう時の解決策でした。
Webページに対してJavaScriptを実行ではダメ。
ショートカットの入力(SafariのWebページ)に対してJavaScriptを実行が正解。
少し鬼畜すぎやしませんかい?
当サイトのスマホデザインを確認するのにSafariでスーパーリロードが使えればと思ったのが、まさかこんなに時間を食ってしまうとは…なかなか進まないね。
追記
沢山のコメントを頂いております。ありがとうござます。
セキュリティやオートメーションに関する内容を別記事に整理しました。
ただ、別の何かが原因でまだ同じエラーが出る方がおられるようです…
詳しい動作環境とコードをお問い合わせ下されば、力になれるかもしれません。