Webview javascript未在启用javascript的情况下工作
我正在尝试让javascript在android中为这个页面工作: 但是我在浏览器方面有问题 这是为webview设置的参数:Webview javascript未在启用javascript的情况下工作,javascript,android,webview,Javascript,Android,Webview,我正在尝试让javascript在android中为这个页面工作: 但是我在浏览器方面有问题 这是为webview设置的参数: webView1.setWebChromeClient(mClient); webView1.setDownloadListener(new DownloadListener() { @Override public void onDownloadStart(String url, String userAgent, String
webView1.setWebChromeClient(mClient);
webView1.setDownloadListener(new DownloadListener() {
@Override
public void onDownloadStart(String url, String userAgent, String contentDisposition, String mimetype, long contentLength) {
Uri uri = Uri.parse(url);
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
startActivity(intent);
}
});
webView1.addJavascriptInterface(new JavaScriptInterfaceForTitle(this, mPasswordStrength, webView1), "HtmlViewer");
webView1.setWebViewClient(new WebViewClient() {
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
String cookie = CookieManager.getInstance().getCookie(url);
if (url.equals(getContentUrl() + "addcomment")) {
webView1.stopLoading();
Intent addcommentIntent = new Intent(mContext, AddCommentActivity.class);
addcommentIntent.putExtra("url", previousUrl);
startActivity(addcommentIntent);
} else {
previousUrl = url;
((BaseActivity) mContext).showLoadingDialog();
if (!urlStackList.contains(url)) {
urlStackList.add(url);
}
super.onPageStarted(view, url, favicon);
}
}
@Override
public void onPageFinished(WebView view, String url) {
((BaseActivity) mContext).hideLoadingDialog();
if (url.contains("content/shows/") || url.contains("content/tips/")) {
counter = 0;
view.loadUrl("javascript:window.HtmlViewer.showHTML(document.getElementById('" + mContext.getString(R.string.title_name) + "').innerHTML);");
view.loadUrl("javascript:window.HtmlViewer.showHTML(document.getElementById('name_en').innerHTML);");
view.loadUrl("javascript:window.HtmlViewer.showHTML(document.getElementById('name_zh').innerHTML);");
} else {
mStateBar.setShowTitle(mContext.getString(R.string.tv_drama));
}
super.onPageFinished(view, url);
}
});
webview1.setWebChromeClient(mClient);
webView1.getSettings().setJavaScriptEnabled(true);
webView1.getSettings().setPluginState(PluginState.ON);
webView1.getSettings().setPluginsEnabled(true);
webView1.getSettings().setAppCacheMaxSize(httpCacheSize);
webView1.getSettings().setSupportZoom(false);
webView1.getSettings().setBuiltInZoomControls(false);
webView1.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
我是否缺少一些在android webview上运行的参数?我检查了chrome浏览器,它在那里工作没有问题,所以我肯定我错过了什么,也找不到什么
编辑:
class MyChromeClient extends WebChromeClient {
@Override
public void onShowCustomView(View view, CustomViewCallback callback) {
mCustomViewCallback = callback;
mTargetView.addView(view);
mCustomView = view;
mContentView.setVisibility(View.GONE);
mTargetView.setVisibility(View.VISIBLE);
mTargetView.bringToFront();
}
@Override
public void onHideCustomView() {
if (mCustomView == null)
return;
mCustomView.setVisibility(View.GONE);
mTargetView.removeView(mCustomView);
mCustomView = null;
mTargetView.setVisibility(View.GONE);
mCustomViewCallback.onCustomViewHidden();
mContentView.setVisibility(View.VISIBLE);
}
// For Android 3.0+
public void openFileChooser(ValueCallback<Uri> uploadMsg, String acceptType) {
mUploadMessage = uploadMsg;
Intent i = new Intent(Intent.ACTION_GET_CONTENT);
i.addCategory(Intent.CATEGORY_OPENABLE);
i.setType("image/*");
TvDramaActivity.this.startActivityForResult(Intent.createChooser(i, "Chooser"), 100);
}
// For Android < 3.0
public void openFileChooser(ValueCallback<Uri> uploadMsg) {
openFileChooser(uploadMsg, "");
}
// For Android > 4.1
public void openFileChooser(ValueCallback<Uri> uploadMsg, String acceptType, String capture) {
openFileChooser(uploadMsg, "");
}
@Override
public void onProgressChanged(WebView view, int newProgress) {
}
}
public boolean inCustomView() {
return (mCustomView != null);
}
public void hideCustomView() {
mClient.onHideCustomView();
}
类MyChromeClient扩展WebChromeClient{
@凌驾
ShowCustomView(视图视图、CustomViewCallback回调)上的公共无效{
mCustomViewCallback=回调;
mTargetView.addView(视图);
mCustomView=视图;
mContentView.setVisibility(View.GONE);
mTargetView.setVisibility(View.VISIBLE);
mTargetView.bringToFront();
}
@凌驾
公共无效onHideCustomView(){
如果(mCustomView==null)
返回;
mCustomView.setVisibility(View.GONE);
mTargetView.removeView(mCustomView);
mCustomView=null;
mTargetView.setVisibility(View.GONE);
mCustomViewCallback.onCustomViewHidden();
mContentView.setVisibility(View.VISIBLE);
}
//适用于Android 3.0+
public void openFileChooser(ValueCallback uploadMsg,String acceptType){
mUploadMessage=上传消息;
意向i=新意向(意向.行动\u获取\u内容);
i、 addCategory(意图。类别可打开);
i、 setType(“image/*”);
TVTrameActivity.this.startActivityForResult(Intent.createChooser(i,“Chooser”),100);
}
//对于Android<3.0
public void openFileChooser(ValueCallback uploadMsg){
openFileChooser(uploadMsg,“”);
}
//对于Android>4.1
public void openFileChooser(ValueCallback uploadMsg、字符串接受类型、字符串捕获){
openFileChooser(uploadMsg,“”);
}
@凌驾
public void onProgressChanged(WebView视图,int newProgress){
}
}
公共布尔值inCustomView(){
返回(mCustomView!=null);
}
公共无效隐藏视图(){
mClient.onHideCustomView();
}
这对我很有用:
在WebView活动类中:
WebView webView1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
webView1 = (WebView) findViewById(R.id.web);
webView1.setWebChromeClient(new WebChromeClient());
webView1.getSettings().setJavaScriptEnabled(true);
webView1.getSettings().setPluginState(PluginState.ON);
webView1.getSettings().setSupportZoom(false);
webView1.getSettings().setBuiltInZoomControls(false);
webView1.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
webView1.loadUrl("http://test.swiss-impulse.com/scratch_card_game/index.html");
}
您的布局文件:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent">
<WebView
android:id="@+id/web"
android:layout_width="fill_parent"
android:layout_height="fill_parent"/>
</LinearLayout>
不要忘记在清单文件中添加
希望这有帮助。谢谢。您可以尝试下面的代码
mWebView.setWebChromeClient(new WebChromeClient());
//support JavaScript
mWebView.getSettings().setJavaScriptEnabled(true);
LogcatAddWebView1.setWebChromeClient(新WebChromeClient())中是否存在任何错误或警告;无错误或警告WebView1.setWebChromeClient(mClient);我已经有了。我将编辑帖子以查看我的WebChromeClient请粘贴完整的WebView代码页面是否有划痕?我的意思是,如果你划破蓝色区域,会有一张照片吗?你也可以从你的末端检查这个。它很奇怪,因为对我来说它不起作用。你能告诉我你在哪里测试什么Android版本吗?(我在安卓4.3上测试)我在安卓4.4 HTC One上测试。谢谢链接。我将向网络团队报告并进行检查。