簡體   English   中英

iPhone SDK:以編程方式提交UIWebview

[英]iPhone SDK: Submit a UIWebview programmatically

我有一個UIWebview,可以自動填寫用戶名和密碼。 現在,我所需要做的就是讓Webview自動提交,就像用戶按下“登錄”按鈕一樣。 無論如何,是否可以通過編程方式將此功能調用到Webview? 順便說一句,如果有幫助的話,我正在使用hotmail作為網站。

要提交表單,您需要做的是執行一段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處理程序),您的應用就會中斷。 通常,依賴於應用程序中網站的特定HTML結構可能會引起問題-如果可以,最好使用Web服務(例如REST)樣式的API(如果提供)。

在網絡視圖中加載的網絡內容應包含用於提交頁面的JavaScript。 在您的WebViewController中實現webViewDidFinishLoad:並調用stringByEvaluatingJavaScriptFromString:@"yourJavascriptSubmitMethodCall()"我離開了mac / xcode。 值得嘗試。

您可以在Web視圖中搜索提交按鈕,然后單擊第一個。 它在很多情況下都應該起作用。

- (void)clickOnSubmitButtonForWebView:(UIWebView *)webView {

    NSString *performSubmitJS = @"var passFields = document.querySelectorAll(\"input[type='submit']\"); \
    passFields[0].click()";
    [webView stringByEvaluatingJavaScriptFromString:performSubmitJS];

}

Web視圖並不意味着為您調用函數。 它只會幫助您以指定的格式顯示頁面內容。 登錄或任何其他此類功能應在網站代碼的后端以編程方式進行處理。 這就是我可以說的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM