iOS 利用UIWebView與JavaScript互動的最簡單辦法(本人已驗證可行)

來源:互聯網
上載者:User

標籤:android   c   style   blog   java   a   


網上說的很多針對Mac OS X的,還有很多都是複製”朱祁林“的貼子的,絕大多數人是沒有經過驗證的,

看清楚了,這裡說的是針對iOS的!並且方法很簡單!!並且驗證可行的!!!


1, UIWebView調用 JavaScript 的函數:

NSString* strValue = [webView stringByEvaluatingJavaScriptFromString:@"YourFunctionName(‘YourParameter‘)"];

上面這句就是調用 JavaScript裡面自訂的函數 YourFunctionName(傳入參數‘YourParameter‘,取得返回值賦給strValue )


2,JavaScript (通過UIWebView)調用ObjC方法:

下面說到的是最簡單、最通用的辦法!!指令碼寫完之後可以丟到Android執行的:

就是利用UIWebView(Android的是WebView)攔截URL的功能!!!約定一個特殊URL,寫在指令碼,讓上層去攔截分析!!比如,

在JavaScript寫上:

window.location.href = "ABCD://XXXYYYZZZ"


在iOS裡面:

實現UIWebViewDelegate下面這個函數(不要忘記設定 webView.delegate = self 這樣細節)

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType

{

          NSString* strXXX = request.URL.resourceSpecifier;

          //假設只是分析 "ABCD://"

            NSRange range = [strXXX rangeOfString:@"ABCD://"];
             if( range.location != NSNotFound )
             {
                    //就在這裡執行操作了!!!

            
                   return NO;//返回NO,表示取消對本次請求的導航

              }

        return YES;

}


//Android裡面,利用WebView 重載這個函數也可以做到同樣效果

public boolean shouldOverrideUrlLoading(WebView  view, String url) { 

return true;
}


這樣,當JavaScript執行window.location.href = "ABCD://XXXYYYZZZ"這句,就觸發上層的對應操作了!

也就是實現JavaScript調用上層ObjC函數的功能了


轉載請註明出處:http://blog.csdn.net/h_o_w_e/article/details/28887005

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.