0
我試圖在webview中實時捕獲html表單中的文本輸入。我目前使用jquery捕獲文本輸入更改,然後通過我攔截的URL轉發值。我能夠捕獲文本輸入中的每個更改,但是我遇到的問題是我的文本輸入失去了對輸入的每個新字符的注意力,我不得不重新輸入文本以繼續輸入每次(window.location.href導致它每次觸發時都會失去焦點)。使用下面的代碼林:Swift IOS實時捕獲html表單輸入jquery
var form = "
<form class="search_extended">
<input style="" type="text" name="name" id="search_field">
<input type='hidden' name='page' value='name_search'>
</form>"
var script = "
<script type="text/javascript">
$(document).ready(function() {
$("form input, form textarea").on("input propertychange change", function() {
var search_serialized = $(".search_extended").serialize();
window.location.href = "?" + search_serialized;
});});</script>"
script = script + "<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>"
self.webView_Search_Extended.loadHTMLString(form + script, baseURL: nil)
捕捉轉發URL
func webView(_ webView: UIWebView, shouldStartLoadWith request: URLRequest, navigationType: UIWebViewNavigationType) -> Bool {
print(request.url?.absoluteString)
var url = request.url?.absoluteString
return true
}
你是一個人生的滋味!你知道使用自定義方案背後的原因,爲什麼它不會導致模糊?我有點難以理解它爲什麼這樣工作。 – user2423476
@ user2423476這實際上並不是這裏的定製方案,自定義方案只是讓它很容易捕捉到特定的調用(我不確定是否也許你會從webview調用其他調用,而且它使得更多的答案適用於可能遇到它的任何其他用戶)。在這種條件下,做出不同的是'return false'。當你返回true時,你告訴webview可以加載請求,在這種情況下,重新加載頁面,這又會模糊頁面上的所有輸入。返回false可以讓您捕獲數據,但不會重新加載。 –