Android与ios如何获取webview中的title及description及图片
大家在微信分享h5连接的时候会发现,微信将h5页面的标题及description和大图读出来然后放在分享页面里,那么如果是自己的app,该如何实现呢
解决办法:
一、利用webview执行js获取dom树
这种很简单,就是加载完webview后,执行js获取dom树,进行查询,代码如下1、先创建一个JavaScript接口类:
class MyJavaScriptInterface { @JavascriptInterface @SuppressWarnings("unused") public void processHTML(String desc) { // 在这里处理html源码 }}注意粗体的函数名processHTML,在第2步里还要用到。
WebSettings settings = webView.getSettings(); // 此方法需要启用JavaScript settings.setJavaScriptEnabled(true); // 把刚才的接口类注册到名为HTMLOUT的JavaScript接口 webView.addJavascriptInterface(new MyJavaScriptInterface(), "HTMLOUT"); // 必须在loadUrl之前设置WebViewClient webView.setWebViewClient(new WebViewClient() { @Override public void onPageFinished(WebView view, String url) { // 这里可以过滤一下url webView.loadUrl("BfwJavascriptHTMLOUT.processHTML(document.querySelector('meta[name=\"description\"]').getAttribute('content'));"); } }); // 开始加载网址 webView.loadUrl(url);
ios代码为
- (void)webViewDidFinishLoad:(UIWebView *)webView { NSString *js = @"document.querySelector('meta[name=\"description\"]').getAttribute('content')"; NSString *pageSource = [webView stringByEvaluatingJavaScriptFromString:js]; NSLog(@"pagesource:%@", pageSource); }
二、在url后面利用休止符#分割传参
例如:本来的链接是http://bfw.wiki/
那么传给app的链接变为http://bfw.wiki/##分享标题##分享描述##分享图片地址
ok,app分享后直接用##进行分割字符串获取数组
网友评论0