Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/410.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Webview javascript未在启用javascript的情况下工作_Javascript_Android_Webview - Fatal编程技术网

Webview javascript未在启用javascript的情况下工作

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

我正在尝试让javascript在android中为这个页面工作:

但是我在浏览器方面有问题

这是为webview设置的参数:

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上测试。谢谢链接。我将向网络团队报告并进行检查。