对于Phone gap和Java脚本来说,这是一个新手。如果任何人提供样品或sugesstion将有很大帮助。
例外:我遇到以下异常:未捕获TypeError:对象[object Object]没有方法'getName'
public class ViewerActivity extends DroidGap {
private CordovaActivity mGap;
private WebView mWebView;
WebView mWebView;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mWebView=new WebView(this);
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.addJavascriptInterface(new JavaScriptInterfaceClass (), "jsinterface");
mWebView.loadUrl("file:///android_asset/www/sample.html");
}
}
Java Script Interface类:
public class JavaScriptInterfaceClass {
public WebView mAppView;
public DroidGap mGap;
public JavaScriptInterfaceClass(DroidGap gap, WebView view) {
this.mAppView = view;
this.mGap = gap;
}
public String getName() {
return "android";
}
}
HTML:
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" href="css-js/jquery.mobile-1.0a3.min.css" />
<script src="css-js/jquery-1.5.min.js"></script>
<script src="css-js/jquery.mobile-1.0a3.min.js"></script>
</head>
<body>
<script>
function myFunction()
{
var name = jsinterface.getName();
alert("Hello! I am an alert box!"+name);
}
</script>
<input type="button" onclick="myFunction()" value="Show alert box" />
</body>
</html>
答案 0 :(得分:1)
班级名称错误。正确的应该是
mWebView.addJavascriptInterface(new JavaScriptInterfaceClass(), "jsinterface");
^
答案 1 :(得分:0)
除了在答案中更改班级名称外,您还必须在该功能的前面添加一行。
@Javascriptinterface public String getName(){ (......) }
这可以防止恶意js代码只是拨打可能存在的任何功能