安卓:即使使用setJavaScriptEnabled(true),在WebView上仍无法运行JavaScript

7

我对Android完全不了解,这只是一个简单的测试。 参考了这个教程。

下面是HelloWebApp.java文件:

package com.company.something;

import android.app.Activity;
import android.os.Bundle;
import android.webkit.WebView;

public class HelloWebApp extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        WebView webView = (WebView)findViewById(R.id.webView);
        webView.getSettings().setJavaScriptEnabled(true);
        webView.loadUrl("file:///android_asset/www/index.html");
    }
}

以下是来自res/layout/main.xml的内容:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
<WebView  
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:id="@+id/webView"
    />
</LinearLayout>

此外,我在清单文件中只更改了以下内容:

<activity android:name=".HelloWebApp"
android:label="@string/app_name"
android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen"
android:screenOrientation="landscape">

关于JavaScript,我已经尝试了一切。复杂的、简单的,放在页面底部、按钮中、头部中等等。但都没有起作用。HTML却可以正常工作。

非常感谢您的帮助。

3个回答

23
你错过了教程中添加的部分。
webView.setWebChromeClient(new WebChromeClient());

添加完成后立即执行

webView.getSettings().setJavaScriptEnabled(true);

该方法的JavaDoc中提到:

设置chrome handler。 这是一个用于处理Javascript对话框,favicon,标题和进度的WebChromeClient实现。 这将替换当前的处理程序。


3
谢谢 no.good.at.coding。虽然那应该是我的名字。;-) - HotFudgeSunday
教程中没有提到的一件事是导入:import android.webkit.WebChromeClient; import android.webkit.WebView;。您可以将鼠标悬停在红色下划线的代码上,然后会出现一些选项来修复它。第一个选项将是导入。 - HotFudgeSunday
webView.setWebChromeClient(new WebChromeClient()); 这里缺少的是这个。谢谢。 - BREI

2

https://dev59.com/IGsz5IYBdhLWcg3w9ssQ#7561674所讨论的那样,

连同

mWebView = (WebView) findViewById(R.id.webview);
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.setWebChromeClient(new WebChromeClient());

您需要启用DOM存储。

WebSettings webSettings = webView.getSettings();
webSettings.setDomStorageEnabled(true);

-2

只需添加

import android.webkit.WebChromeClient;
import android.webkit.WebView;

在YourApp.java文件中


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接