Android WebView 不加载 jQuery
Posted
技术标签:
【中文标题】Android WebView 不加载 jQuery【英文标题】:Android WebView doesn't load jQuery 【发布时间】:2011-10-08 16:52:39 【问题描述】:我正在制作一个 webapp,我正在使用 jQuery。
我制作了一个简单的 android 应用程序,其中包含一个 WebView,我加载了我的网址: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,警报显示正常。但是如果我从我的本机应用程序访问,它不会显示。我能做什么?
【问题讨论】:
是的。它已加载。我已经编辑了代码。它在浏览器中运行良好,但在应用程序中运行良好。 什么是网络应用程序?喜欢 mobile.mydomain.com? 即使你不使用 jQuery 并且只是做一个普通的 ol' 警报,它是否工作? Neal 我正在尝试一个简单的:<script type="text/javascript" charset="utf-8"> alert("juas"); </script>
,但它不起作用......
我刚刚把 browser.getSettings().setJavaScriptEnabled(true);在 browser.setWebViewClient 之前,它可以工作... :) 谢谢!
【参考方案1】:
您的网页视图中是否启用了 JavaScript...?
WebView.getSettings().setJavaScriptEnabled(true);
【讨论】:
是的browser = new WebView(this); browser.setWebViewClient(new WebViewClient() ..... setContentView(browser); browser.getSettings().setJavaScriptEnabled(true); browser.loadUrl("http://mydomain.com");
【参考方案2】:
老问题,但我还是想加我的 2cents。
Javascript 警报确实可以在 web 视图中使用,但您必须先设置 Web chrome 客户端。
webView.setWebChromeClient(new WebChromeClient())
【讨论】:
谢谢。这对我来说是最好的答案【参考方案3】:我不是 Android 原生专家,但我们刚刚在 web 视图中使用基于 jQuery 的站点开发了一个应用程序。您的活动类中需要 setJavaScriptEnabled(true) 并且 jQuery 运行良好。但是你的例子 alert('Hi');将不起作用,因为默认情况下 Android webviews 不支持警报。它可以通过谷歌搜索来启用...http://lexandera.com/2009/01/adding-alert-support-to-a-webview/
另外,我们添加了一个自定义 showAlert js 函数来显示漂亮的用户通知。
【讨论】:
【参考方案4】:您的 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 文件。
【讨论】:
【参考方案5】:你可能需要两件事:
webSettings.setJavaScriptEnabled(true);
webView.setWebChromeClient(new WebChromeClient());
【讨论】:
【参考方案6】:问题似乎是 jquery.js 文件的位置。发布一些关于如何设置 webView 的代码。这会给我们一些提示。
举个例子,看看这个: http://techdroid.kbeanie.com/2010/10/android-webview-javascript-and-css.html
【讨论】:
【参考方案7】:试试这个:创建一个主活动。
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 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文件一起放入项目的asset文件夹中。
【讨论】:
【参考方案8】:正确的顺序-
webview.getSettings().setJavaScriptEnabled(true); webview.loadUrl("file:///android_asset/xxx.html");
不要让你的调用顺序出错,如下所示
webview.loadUrl("file:///android_asset/xxx.html"); webview.getSettings().setJavaScriptEnabled(true);
【讨论】:
以上是关于Android WebView 不加载 jQuery的主要内容,如果未能解决你的问题,请参考以下文章
android中webview 怎么实现网页加载时显示加载进度
WebView 在某些 Android 设备上不加载图像或 css
android webview 加载url有延迟怎么办,有没有比wenview更好的第三方控件