質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

解決済

2回答

9348閲覧

WKWebView上でのjavascript実行について

hirhir

総合スコア11

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2017/01/22 03:38

WKWebView上でのjavascriptの実行方法について質問です。以下のようなコードを書いて、alertを表示させたいのですが、表示されません。。。
何か記載方法が間違っているのでしょうか???(Googleの画面は表示されています。)
どなたか、詳しい方ご教授頂けると助かります。

swift

1// Create WKWebView 2 wkWebView = WKWebView(frame:rectOfWKWebView) 3 4 let urlString = "https://www.google.com" 5 let url = URL(string: urlString) 6 let request = URLRequest(url:url! as URL) 7 wkWebView!.load(request) 8 9 self.view.addSubview(wkWebView!) 10 self.wkWebView!.evaluateJavaScript("alert('alert')", completionHandler:nil)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

WKWebViewはJSでのalert,confirmなどのダイアログはできませんので、OBJ-CやSwift等から表示させる必要があります。
参考ページ

投稿2017/01/22 03:44

編集2017/01/22 03:45
turbgraphics200

総合スコア4267

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hirhir

2017/01/22 04:59

そうだったんですね!!!助かりました。ありがとうございます。 もう一つだけ質問させて頂いてもよろしいですか??WKWebViewからJSでリンクの(aタグの)disabled属性の切り替えは可能でしょうか?実はこれがやりたくて試行錯誤しているのですが、こちらも動かないのです。以下のように実装してみました。 self.wkWebView!.evaluateJavaScript("document.getElementsByClassName('XXX')[1].disabled=false", completionHandler: nil) ご教授頂けると、とても助かります。
turbgraphics200

2017/01/22 07:02

aタグにはdisabled属性はないため、.style.pointerEvents='none' などの代替えで行うしかないと思います。
hirhir

2017/01/22 09:08 編集

ご返信ありがとうございます。そもそもaタグにdisabled属性はないのですね!!トンチンカンな質問ですみませんでした。もし良かったら、新しく質問を掲載しましたので、ご確認頂き、何かアドバイスを頂けると助かります。https://teratail.com/questions/63006
guest

0

すでに解決済みでしたが、為になったので追加の情報を置こうと思った次第です。

webView内でwebからアラートを表示するのであれば

swift

1func webView(_ webView: WKWebView, runJavaScriptAlertPanelWithMessage message: String, initiatedByFrame frame: WKFrameInfo, completionHandler: @escaping () -> Void) 2 { 3 let alertController = UIAlertController(title: "", message: message, preferredStyle: .alert) 4 let otherAction = UIAlertAction(title: "OK", style: .default) { 5 action in completionHandler() 6 } 7 alertController.addAction(otherAction) 8 present(alertController, animated: true, completion: nil) 9 }

上記の記述がある状態でしたら、ネイティブからwebView内にアラートを表示することが確認できました。

swift

1self.wkWebView!.evaluateJavaScript("alert('alert')", completionHandler:nil)

もし、ネイティブからwebviewにアラートを出したい時は参考にしてみてください。

投稿2018/01/30 04:10

esocchi

総合スコア24

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問