我有一個自動填充用戶名和密碼的UIWebview。現在,我需要的僅僅是讓webview自動提交,就好像用戶按下了登錄按鈕一樣。無論如何,以編程方式將此函數調用到webview?順便說一句,如果這有幫助的話,我使用hotmail作爲網站。iPhone SDK:以編程方式提交UIWebview
回答
要使表單被提交,你需要做的是執行一段JavaScript代碼,它發現提交按鈕的DOM元素,然後調用click()方法。
我不知道hotmail登錄頁面的結構,但如果在提交按鈕上有一個id屬性,則可以使用document.getElementById(...)來檢索它。否則,您可能需要編寫代碼來查看所有輸入元素以找到type =「submit」的代碼。
在簡單的情況下,我們假設提交按鈕的ID爲「submit_button」。然後在你的目標C代碼,你將有以下:
- (void)webViewDidFinishLoad:(UIWebView *)webView
{
NSString *code = @"document.getElementById('submit_button').click()";
[webView stringByEvaluatingJavaScriptFromString: code]
}
如果你需要做任何事情更復雜,您可以更改代碼字符串的內容。這只是在頁面上下文中運行的JavaScript代碼。
雖然暫時回過頭來,但我建議你考慮一個更可靠的方法來做到這一點。 Hotmail的登錄頁面可能隨時發生變化,如果您的應用程序改變了提交按鈕的工作方式,則會中斷您的應用程序。給它一個不同的名字,或者使用其他一些檢測輸入的方法(比如一個javascript onclick handler)。一般來說,依靠應用中某個網站的特定HTML結構可能會導致問題 - 如果可以的話,最好使用Web服務(例如REST)樣式的API(如果提供了該API)。
我發現按鈕ID中的外觀登錄是:idSIButton9。所以,我做了這段代碼:NSString * loadWebsiteJS = @「document.getElementByID('idSIButton9')。click()」; [self.eMailTab3 stringByEvaluatingJavaScriptFromString:loadWebsiteJS]; 其中eMailTab3是webview。然而,這不起作用,我不知道爲什麼。是否假定進入click()括號?他們的目的是什麼?我也嘗試使用「提交」登錄按鈕的類型,但這也不起作用。我不確定最新錯誤,但感謝您的時間:) – mrprogrammer
將以下javascript代碼包裝在一起: 'try {...} catch(e){e; }' 如果引發異常,將返回錯誤消息。我這樣做是爲了使用這種方法在UIWebView中執行的所有JavaScript代碼。 –
Web視圖並不意味着爲您調用函數。它只會幫助你以指定的格式顯示你的頁面內容。登錄或任何其他此類功能應在您的網站代碼的後端以編程方式處理。這就是我可以說的。
在Web視圖中加載的網頁內容應該包含提交頁面的JavaScript。在您的WebViewController中執行webViewDidFinishLoad:
&致電stringByEvaluatingJavaScriptFromString:@"yourJavascriptSubmitMethodCall()"
我遠離mac/xcode。值得嘗試。
我不確定如何實現該方法。我已經在webViewDidFinishLoad中使用了我的函數,這就是使用我的代碼的方式: NSString * savedUsername = @「[email protected]」; NSString * loadUsernameJS = [NSString stringWithFormat:@「var inputFields = document.querySelectorAll(\」input [type ='email'] \「); \ for(var i = inputFields.length >>> 0; i-- ;){inputFields [i] .value ='%@';}「,savedUsername]; [eMailTab3 stringByEvaluatingJavaScriptFromString:loadUsernameJS]; 如何在那裏包含該功能? – mrprogrammer
您可以搜索webview的提交按鈕,然後點擊第一個。 它應該在很多情況下工作。
- (void)clickOnSubmitButtonForWebView:(UIWebView *)webView {
NSString *performSubmitJS = @"var passFields = document.querySelectorAll(\"input[type='submit']\"); \
passFields[0].click()";
[webView stringByEvaluatingJavaScriptFromString:performSubmitJS];
}
- 1. iPhone SDK:以編程方式控制UIWebView中的網站
- 2. iPhone SDK - 以編程方式添加UINavigationController
- 3. Cocoa Touch UIWebView - 以編程方式與網頁交互
- 4. 以編程方式提交表單
- 5. 以編程方式提交表單
- 6. 如何以編程方式提交SearchView?
- 7. iPhone SDK:我如何以編程方式創建正方形?
- 8. UIWebView以編程方式禁用縮放
- 9. uiwebview以編程方式縮放
- 10. 以編程方式創建UIWebView
- 11. 以編程方式啓動UIWebView鍵盤
- 12. Swift以編程方式縮小UIWebView
- 13. 編程式地滾動一個UIWebView iPhone SDK
- 14. 以編程方式鎖定Iphone以編程方式
- 15. 如何以編程方式生成iPhone SDK的PDF縮略圖?
- 16. 以編程方式將plist添加到plist(iphone sdk)
- 17. iPhone sdk以編程方式讀取崩潰文件?
- 18. 如何使用SDK /以編程方式在iPhone上獲取AppID?
- 19. iPhone SDK 2:以編程方式添加信息按鈕
- 20. 以編程方式在iphone sdk中創建sqlite數據庫
- 21. 以編程方式打開iPhone SDK中的藍牙?
- 22. iPhone SDK - 如何使用動畫以編程方式滾動UITableView?
- 23. Web Scraping - 以編程方式提交和提取表單的值
- 24. Spark獨立模式:以編程方式提交作業
- 25. iPhone - 以編程方式添加的用戶交互UIImageView
- 26. iphone uiwebview編程縮放
- 27. 以編程方式辭退iPhone鍵盤
- 28. 如何以編程方式振動iPhone
- 29. iPhone:以編程方式按下按鈕
- 30. iPhone - 以編程方式創建UITabBar?
http://stackoverflow.com/questions/11201110/html-5-ios-creating-hybrid-applications試試這個。 – MasterBeta