关于获取HTML元素属性的prop()和attr()的区别

html-css032

关于获取HTML元素属性的prop()和attr()的区别,第1张

一、对于HTML元素本身就带有的固有属性,在处理时,使用prop方法。

二、对于HTML元素我们自己自定义的DOM属性,在处理时,使用attr方法。

<a href="http://www.baidu.com" target="_self">百度</a> 

href,target是a链接中固有的属性值 用prop()方法获取属性值.

<a href="#" id="desc" action="drop">减少</a> 

href,id是a链接中固有的属性值 ,但是action是自己添加的属性值,所有如过我想获取action的属性值,用attr().

当然固有属性也可以用attr()来获取

只能通过JavaScript来获取, 然后通过JS获取, 然后通过JavaScriptInterface来传递给Java层。\x0d\x0a\x0d\x0a做webview,遇到2种需求,一种是在自己服务器上的HTML中获取数据,另一种是通过自己服务器上的HTML中的超链接跳到另一个站点的HTML中,并获取数据。\x0d\x0a于是,总结了2种通过webview获取网页上的数据的方式:\x0d\x0a第一种:简单点的,直接通过js调java,在调用方法的过程中将数据通过方法的参数传递给Android端,(前提:服务端有对应的faxun对象,而且调用的方法是showImages(String[] imgUrls))。\x0d\x0a\x0d\x0aclass MyJavaScriptInterface {\x0d\x0a\x0d\x0aMyJavaScriptInterface() {\x0d\x0a}\x0d\x0a\x0d\x0a/**\x0d\x0a * js调java,显示图片\x0d\x0a *\x0d\x0a * @param imgUrls\x0d\x0a */\x0d\x0a@JavascriptInterface\x0d\x0apublic void showImages(String[] imgUrls) {\x0d\x0aLogUtils.i(TAG, "imgUrls = " + imgUrls[0])\x0d\x0aNewsDetailWebviewActivity.this.imgUrls = imgUrls\x0d\x0a}\x0d\x0a}\x0d\x0a\x0d\x0a...\x0d\x0awebView.addJavascriptInterface(new MyJavaScriptInterface(), "faxun")\x0d\x0a\x0d\x0a第二种:有点复杂,通过webview注册一个本地接口后,然后通过java调js,拿到document对象后,解析HTML标签,然后数据会通过本地接口中的回调方法传递给Android端,(前提:HTML页面中的meta标签中有对应的reply_info名称和content属性,数据是封装在content里面的json格式的字符串)。\x0d\x0a\x0d\x0aclass MyWebClient extends WebViewClient {\x0d\x0a@Override\x0d\x0apublic void onPageFinished(WebView view, String url) {\x0d\x0aview.loadUrl("javascript:window.getShareData.OnGetShareData("\x0d\x0a+ "document.querySelector('meta[name=\"reply_info\"]').getAttribute('content')" + ")")\x0d\x0asuper.onPageFinished(view, url)\x0d\x0a}\x0d\x0a}\x0d\x0a\x0d\x0aprivate class GetShareDataInterface {\x0d\x0a@JavascriptInterface\x0d\x0apublic void OnGetShareData(String shareData) {\x0d\x0aif (null != shareData) {\x0d\x0atry {\x0d\x0aJSONObject shareJson = new JSONObject(shareData)\x0d\x0atitle = shareJson.optString("title")\x0d\x0adescription = shareJson.optString("description")\x0d\x0aimageUrl = shareJson.optString("imageUrl")\x0d\x0a} catch (JSONException e) {\x0d\x0ae.printStackTrace()\x0d\x0a}\x0d\x0a\x0d\x0a}\x0d\x0a}\x0d\x0a}\x0d\x0a\x0d\x0a.....\x0d\x0awebView.setWebViewClient(new MyWebClient())\x0d\x0a\x0d\x0a其实,如果是普通的需求,两种方式都可以解决问题,但是如果是有些HTML没有做js调java,只是个普通的HTML,并且需要获取页面上的数据时,只能通过第二种方式来获取HTML上的数据了,比如获取HTML上的title等等。