我正在制作一个webapp,而我正在使用jQuery。
我已经制作了一个带有WebView的简单Android应用程序,我加载了我的网址:www.mydomain.com
在mydomain.com我有:
<script src="js/jquery_1.4.2_min.js"></script>
<script type="text/javascript" charset="utf-8">
$(document).ready(function(){
alert("Hii!!!!");
});
</script>
如果我从浏览器访问mydomain,则警报显示正常。但是,如果我从我的本机应用程序访问它,它不会显示。我该怎么办?
答案 0 :(得分:18)
您的网页视图是否已启用JavaScript?
WebView.getSettings().setJavaScriptEnabled(true);
答案 1 :(得分:5)
我不是Android原生的专家,但我们刚刚在webview中使用基于jQuery的网站开发了一个应用程序。你的活动类需要setJavaScriptEnabled(true),jQuery运行jsut很好。然而你的例子有警报('嗨');将无法正常工作,因为默认情况下Android网页浏览不支持警报。它可以通过一点点Google搜索来启用... http://lexandera.com/2009/01/adding-alert-support-to-a-webview/
或者我们添加了一个自定义showAlert js函数来显示漂亮的用户通知。
答案 2 :(得分:4)
老问题,但我还是想加上我的2cents。
Javascript警报在网页浏览中有效,但您必须先设置网络客户端。
webView.setWebChromeClient(new WebChromeClient())
答案 3 :(得分:3)
您的js / jquery_1.4.2_min.js脚本位于何处?如果它位于您的资产目录中,那么您应该初始化webView,将其资产目录作为baseUrl:
webView.loadDataWithBaseURL("file:///android_asset/", data, "text/html", "UTF-8", null);
或
webView.loadUrl("file:///android_asset/file.html");
您可以尝试使用像
这样的简单函数创建一个简单的.js文件function dummy(document) { document.write("Hooray it works"); }
并尝试访问html中的 dummy 函数,以测试是否包含.js文件。
答案 4 :(得分:2)
您可能需要两件事:
webSettings.setJavaScriptEnabled(true);
webView.setWebChromeClient(new WebChromeClient());
答案 5 :(得分:0)
问题似乎是jquery.js文件的位置。发布一些有关如何设置webView的代码。这会给我们一些提示。
举个例子,看看这个: http://techdroid.kbeanie.com/2010/10/android-webview-javascript-and-css.html
答案 6 :(得分:0)
试试这个:创建一个主要活动。
import android.app.Activity;
import android.os.Bundle;
import android.webkit.WebView;
import android.webkit.WebViewClient;
public class MainActivity extends Activity {
private WebView webView;
private JavaScriptInterFace javaScriptInterFace;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
webView=(WebView)findViewById(R.id.webView);
javaScriptInterFace=new JavaScriptInterFace(this);
webView.addJavascriptInterface(javaScriptInterFace, "AndroidFunction");
webView.getSettings().setJavaScriptEnabled(true);
webView.loadUrl("file:///android_asset/test.html");
webView.setWebViewClient(new WebViewClient());
}
}
创建另一个名为JavaScriptInterFace的
的java文件 import android.content.Context;
import android.util.Log;
import android.widget.Toast;
public class JavaScriptInterFace {
Context mContext;
JavaScriptInterFace(Context c) {
mContext = c;
}
public int changeImage(){
Log.e("Got", "it"+2);
return 2;
}
public void showToast(){
Toast.makeText(mContext, "hi", Toast.LENGTH_SHORT).show();
}
}
创建一个html文件将此文件放在项目的资产文件夹
中 <!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width; user-scalable=0;" />
<title>My HTML</title>
</head>
<body>
<p id="mytext">Hello!</p>
<img alt="show" src="ic_left_arrow.png" id="myImage"/>
</br>
<input type="button" value="Change" onClick="changeImage()" />
<input type="button" value="Show tost" onClick="showToast()" />
<script language="javascript">
function changeImage() {
i=AndroidFunction.changeImage();
if(i===2){
document.getElementById('mytext').innerHTML = i;
document.getElementById('myImage').src="ic_right_arrow.png";
}
}
function showToast() {
AndroidFunction.showToast();
}
</script>
</body>
</html>
将所需图像与上述html文件一起放在项目的资产文件夹中。
答案 7 :(得分:0)
正确的顺序 -
webview.getSettings()setJavaScriptEnabled(真)。 webview.loadUrl(&#34;文件:///android_asset/xxx.html");
错误地不要让你的调用序列出错,如下所示
webview.loadUrl(&#34;文件:///android_asset/xxx.html"); 。webview.getSettings()setJavaScriptEnabled(真);