userName
とpassword
のフィールドと送信ボタンを含むHTMLファイルを作成しました。 Submitボタンを押すと、JavaScript関数が呼び出されてuserName
の値が返されます。私は一番上のラベルとWebViewを含むネイティブアプリを持っています。 WebViewはそのHTMLファイルでレンダリングされます。 ViewControllerでラベルのテキストとしてWebViewのユーザー名を送信する必要があります。私はstringByEvaluatingJavaScript
をwebViewDidFinishLoad
のUIWebViewDelegate
の機能で使用しようとしましたが、この時点でWebViewのロードが完了していないときにデータを渡す必要があるため、問題はありません。WebViewからネイティブアプリにスウィフトポストデータ
0
A
答えて
0
解決策を見つけました:ユーザー名、パスワード、送信ボタンを含むフォームを作成するために 'Form'要素を使用しました.WebViewのDelegate機能のshouldStartLoadWithリクエストを使用しました。 Submitボタンがタップされるたびに、この関数が呼び出されてForm要素にアクセスします。次に、stringByEvaluatingJavaScript関数を呼び出して、HTMLファイルのjavascript関数にアクセスしました。ここでは、コードは次のようになります。
func webView(_ webView: UIWebView, shouldStartLoadWith request: URLRequest, navigationType: UIWebViewNavigationType) -> Bool {
if (navigationType == UIWebViewNavigationType.formSubmitted) {
// form is submitted or button is clicked , perform your actions here
//let result = webView.stringByEvaluatingJavaScript(from: "document.getElementById('form1').elements[0].value")!
let result = webView.stringByEvaluatingJavaScript(from: "window.myFunc()")!
lbl.text = result
}
return true
}
そしてここでは、HTMLファイルです:
<body>
<form id="form1" name="form1" action="myFunc()" onsubmit="return validateForm()" method="post">
First name:<br>
<input type="text" name="username" id="user">
<br>
Password:<br>
<input type="password" name="password">
<br><br>
<input type="submit" value="Submit">
</form>
<Script>
function myFunc(){
var user = document.getElementById('form1').elements[0].value;
//document.getElementById("button").innerHTML = user;
return user;
}
function validateForm() {
var x = document.forms["form1"]["username"].value;
var y = document.forms["form1"]["password"].value;
if (x == "") {
alert("Name must be filled out");
return false;
}
if (y == "") {
alert("Password must be filled out");
return false;
}
if (x== "" && y == "") {
alert("Fields must be filled out");
return false;
}
}
</Script>
</body>
関連する問題
- 1. CordovaとWebViewのネイティブアプリ
- 2. HTML5からネイティブアプリへ
- 3. ネイティブアプリからラインプロファイルを開く
- 4. iPhoneネイティブアプリからGoogle APIにアクセスする
- 5. iPhoneネイティブアプリからPhoneGapデータベースにアクセス
- 6. パッケージ名を変更せずにAndroid Webapp(webview app)をネイティブアプリにアップグレードする
- 7. ネイティブアプリからウェブアプリを起動する
- 8. Openアンドロイドギャラリーアプリケーションから反応するネイティブアプリ
- 9. ネイティブアプリからのウェブプッシュ許可リクエスト
- 10. ファインダからWebViewにドラッグアンドドロップ
- 11. WebViewクラスからWebViewを含むダイアログを閉じるには
- 12. SFSafariViewControllerからネイティブアプリのインターフェースにデータを交換する
- 13. iPhoneのWebアプリからネイティブアプリを起動するには?
- 14. 反応ネイティブアプリからの投稿リクエストにcsrfトークンを含める
- 15. ネイティブアプリからKurento Media Serverを使用するには?
- 16. Reactネイティブアプリ
- 17. ネイティブアプリ+ウェブアプリ
- 18. WebView Javascriptからのローカルアクセスファイル
- 19. ウェブサイトからリダイレクト - Android WebView
- 20. アトムのWebviewからDOMにアクセスする
- 21. Appcelerator:リモートからWebViewをChromeに接続
- 22. iOSネイティブアプリでウェブからデータを保存できますか?
- 23. ネイティブアプリOAuth2承認
- 24. リップルエフェクトCss | ipadネイティブアプリ
- 25. TizenネイティブアプリIDE
- 26. phonegapとネイティブアプリ
- 27. リアクト - ネイティブアプリのインストールエラー
- 28. ホワイトラベルは、ネイティブアプリの
- 29. MobileFirstネイティブアプリのセキュリティチェック
- 30. ネイティブアプリのビデオ