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> 

  • 适用于Android的JQuery Mobile + PhoneGap - 加载index.html时出错
  • Cordova / Phonegap所有外部Ajax请求返回404
  • 捕获在Android虚拟键盘上使用JavaScript键入的键
  • 强制键盘在android上打开
  • 如何在Phonegap和Android 3.2下启用第三方Cookie?
  • Phonegap(在线构build)应用程序 - 没有互联网连接和networking状态
  • 如何从代码更改jquery移动翻转开关状态
  • JQuery的移动应用程序奇怪的行为
  •  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" />