JQuery不适用于WebView

我尝试在资产/脚本和Internet上包含JQuery文件,但不显示警告对话框。 我得到了日志输出,并使其output.html,它在Windows中工作(很奇怪!)。 WebView有什么问题?

public void onCreate(final Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); webView = (WebView) findViewById(R.id.webView); final String s = "<html><head>" + "<link href=\"css/my.css\" type=\"text/css\" rel=\"stylesheet\" />" + "<script src=\"scripts/jquery-1.6.2.min.js\" rel=\"stylesheet\" type=\"text/javascript\"></script>" + "<script src=\"https://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.js\" type=\"text/javascript\"></script>" + "<script>" + "$(document).ready(function(){ alert('hello'); });" + "</script>" + "</head><body><div>All I hear is raindrops." + "Falling on the rooftop. Oh baby tell me why you have to go. " + "Cause this pain I feel you won't go away. And today, " + "I'm officially missing you.</div></body></html>"; webView.getSettings().setJavaScriptEnabled(true); Log.d("Something", s); webView.loadDataWithBaseURL("file:///android_asset/", s, "text/html", "utf-8", null); } 

这是添加扩展名“.html”后的日志输出。 它适用于Firefox,但不适用于WebView。 🙁

 <html> <head> <link href="css/my.css" type="text/css" rel="stylesheet" /> <script src="scripts/jquery-1.6.2.min.js" rel="stylesheet" type="text/javascript"></script> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.js" type="text/javascript"></script> <script>$(document).ready(function(){ alert('hello'); });</script> </head> <body> <div> All I hear is raindrops.Falling on the rooftop. Oh baby tell me why you have to go. Cause this pain I feel you won't go away. And today, I'm officially missing you. </div> </body> </html> 

Solutions Collecting From Web of "JQuery不适用于WebView"

 webView.loadDataWithBaseURL("file:///android_asset/", s, "text/html", "utf-8", null); 

被改变

 webView.loadDataWithBaseURL(getAssets(), s, "text/html", "utf-8", null); 

要获取资产文件,您需要访问应用程序的资产path。 应用程序是Android上的用户,因此不能以“file://”目录开始访问path。

您需要在assets / scripts文件夹中有jquery.js文件才能使用。

脚本/ jQuery的1.6.2.min.js

这应该工作。

正如已经提到的Android WebView不加载jQuery :

脚本/ jquery-1.6.2.min.js脚本位于何处? 如果它位于资产目录中,那么您应该初始化webView,将资产目录作为baseUrl:

 webView.loadDataWithBaseURL("file:///android_asset/", data, "text/html", "UTF-8", null); 

要么

 webView.loadUrl("file:///android_asset/file.html"); 

你可以尝试用一个简单的函数来创build一个简单的.js文件

 function dummy(document) { document.write("Hooray it works"); } 

并尝试访问您的HTML中的虚拟函数,以testing是否包含.js文件。

setPluginsEnabled WebView设置中的setPluginsEnabled设置为true

我猜,一些JavaScript函数,如提示和警报(系统popup窗口),应该由您的代码来实现。 一个简单的指导..,

1.创build一个Jscalls.java类

 public class Jscalls { Context mContext; Jscalls(Context c) { mContext = c; } /** Show a toast from the web page */ public void alert(String toast) { Toast.makeText(mContext, toast, Toast.LENGTH_SHORT).show(); } } 

2.在你的程序中添加 webView.addJavascriptInterface(new Jscalls(this), "Android");

3.在html页面中不是alert("hello")而是使用Android.alert("hello")

希望它的作品:)

你应该给完整的path加载JavaScript和CSS为例

 <link href="http://yourdomain.com/css/my.css" type="text/css" rel="stylesheet" />