你的位置:首页 > 操作系统

[操作系统]网页与原生应用之间互相跳转


现在的移动应用中,常常需要在应用中展示一个Web页面,通常Web页面也需要再转回原生的应用页面,从而达到更多的页面复用。

这里介绍一种方式,通过提前截获要跳转的A标签,来判断是否需要跳转。

下面是方法:

Android:

 1    mWebView.getSettings().setDomStorageEnabled(true); 2    mWebView.getSettings().setDatabaseEnabled(true); 3    mWebView.getSettings().setJavaScriptEnabled(true); 4    mWebView.loadUrl(url); 5     mWebView.setWebViewClient(new WebViewClient() { 6       @Override 7       public boolean shouldOverrideUrlLoading(WebView view, String url) { 8         //这里添加判断代码,根据url来判断是否需要跳转到原生页面或是继续跳转到网页 9 //        view.loadUrl(url); 10           return true;// 返回true来结束这次监听,不需要再次广播11         }12       });

 

iOS:

UIWebView所在的Controller需要实现UIWebViewDelegate

下面是代码:

 1 - (void)viewDidLoad { 2   [super viewDidLoad]; 3   self.theWebView.delegate = self; // 注意:这里需要设置委托 4   NSURL *url = [NSURL URLWithString:@"http://www.baidu.com"]; 5   NSURLRequest *request = [NSURLRequest requestWithURL:url]; 6   [self.theWebView loadRequest:request]; 7 } 8  9 - (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {10   //判断是否是单击11   if (navigationType == UIWebViewNavigationTypeLinkClicked)12   {13     NSURL *url = [request URL];14     // 这里加入判断语句,判断网页url,是否需要继续跳转,或是使用原生页面15     return NO; // 返回NO,结束网页跳转,如果要继续跳转,需要返回YES16   }17   return YES; // 继续网页跳转18 }