Mil*_* Na 1 javascript java android android-webview
我想在我的 Android 应用程序中显示 html 图像地图。为此,我使用 WebView,并且我希望当<area>单击 a 时,单击的区域执行某些操作。例如,如果我使用踢或触摸“北卡罗来纳州”,我会在祝酒词中显示它的名称。
我的代码是:
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>map_usa_856</title>
</head>
<body>
<img src="usamap.png" width="320" height="266" style="margin:0 auto; display:block;" usemap="#Map" border="0" />
<map name="Map" id="Map">
<area shape="poly" href="North Carolina" alt="North Carolina" title="North Carolina" coords="266,109,267,107,270,107,270,105,273,102,278,100,277,98,275,98,276,96,278,96,280,93,278,91,277,91,278,90,277,88,245,93,244,97,242,97,239,100,236,102,233,102,232,104,231,104,231,105,237,104,240,102,250,102,250,102,252,104,258,102">
<area shape="poly" href="North Dakota" alt="North Dakota" title="North Dakota" coords="119,17,152,17,155,38,118,36">
<area shape="poly" href="Rhode Island" alt="Rhode Island" title="Rhode Island" coords="289,48,291,53,292,52,302,54,302,57,311,57,311,51,302,51,302,53,292,51,291,48">
<area shape="poly" href="Illinois" alt="Illinois" title="Illinois" coords="208,79,207,80,208,82,207,85,205,87,205,91,203,93,203,93,202,93,200,93,200,95,198,93,199,90,192,87,194,82,191,82,190,82,190,80,185,77,185,75,187,69,187,67,190,67,192,62,189,60,204,59,204,60,206,62">
<area shape="poly" href="New Mexico" alt="New Mexico" title="New Mexico" coords="117,96,83,93,78,130,83,131,84,127,92,129,92,127,115,129"> <area shape="poly" alt="Georgia" title="Georgia" coords="255,123,252,123,252,120,250,119,249,117,247,117,246,114,242,114,241,111,240,109,237,107,236,107,236,105,222,107,227,121,231,125,229,127,229,130,229,132,231,134,247,133,247,134,249,131,252,131,252,128,252,125,254,124">
</map>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
我找到了这个:
webview.setWebViewClient(new WebViewClient(){
public void onPageFinished(WebView view, String url){
Log.e("String HrefValue :-",url);
}
});
Run Code Online (Sandbox Code Playgroud)
但它没有给我我想要的答案。你能帮忙吗?
根据w3c 规范, href 属性<area>必须是有效的 URL。显然“北卡罗来纳州”不是有效的 URL。这是你的首要问题。
现在,您需要在用户单击 时显示 Toast 消息<area>。显示 Toast 消息必须在 java 代码中完成,Android 为您提供了一种非常简单的方法来从 javascript 调用某些 java 方法。
在您的 Activity 代码中:编写一个方法来显示 Toast 并用以下注释对其进行注释@JavascriptInterface:
/** Show a toast from the web page. (this method will be called by javascript) */
@JavascriptInterface
public void showToast(String areaName) {
Toast.makeText(mContext, "You clicked on "+areaName, Toast.LENGTH_SHORT).show();
}
Run Code Online (Sandbox Code Playgroud)
您还必须:
WebView webView = (WebView) findViewById(R.id.webview);
//enable javascript
webView.getSettings().setJavaScriptEnabled(true);
//all methods annotated with @JavascriptInterface are callable
//from javascript by using the "Android" object.
webView.addJavascriptInterface(this, "Android");
Run Code Online (Sandbox Code Playgroud)
最后在您的 html 代码中:使用正确的 url 调用Android.showToast(...)javascript <area href=...>:
<area shape="poly" href="javascript:Android.showToast('North Carolina');return false;" alt="North Carolina" title="North Carolina" coords="266,109,267,107,270,107,270,105,273,102,278,100,277,98,275,98,276,96,278,96,280,93,278,91,277,91,278,90,277,88,245,93,244,97,242,97,239,100,236,102,233,102,232,104,231,104,231,105,237,104,240,102,250,102,250,102,252,104,258,102">
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2514 次 |
| 最近记录: |