Android与ios如何获取webview中的title及description及图片

Android与ios如何获取webview中的title及description及图片

<a href='/tag/android.html'>Android</a>与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步里还要用到。

2、注册刚才的JavaScript接口:
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分享后直接用##进行分割字符串获取数组


{{collectdata}}

网友评论0