0

我有一个带有按钮的 HTML 文件,当我们单击该按钮时,该按钮将弹出一条警报消息。

我放置了 HTML 文件资产文件夹,它正确加载到模拟器,我可以看到按钮,但我面临的问题是,按钮单击没有响应,我看不到弹出消息。

我还启用了 JavaScript,但结果是否定的。然后我将警报事件更改为 JavaScript 代码但不起作用。我在这里添加我的代码,如果有人可以提供帮助,我将不胜感激。

public void onCreate(Bundle savedInstanceState)
{
     super.onCreate(savedInstanceState);
     setContentView(com.example.test.R.layout.activity_main);

     myWebView= (WebView) findViewById(com.example.test.R.id.webView1);
     myWebView.getSettings().setJavaScriptEnabled(true);
     myWebView.loadUrl("file:///android_asset/myown.html"); 
}

以下是我的 HTML 页面代码

<!DOCTYPE html>
<html>
    <body>

        <button type="button" onclick="alert('Hello world!')">Click Me!</button>

    </body>
</html>
4

3 回答 3

2

为此,您需要使用webChromeClientand override函数:onJsAlert()

WebView wv=new WebView(this);   
wv.setWebChromeClient(new WebChromeClient() {
    @Override
    public boolean onJsAlert(WebView view, String url, String message, JsResult result) {
                //Do what you need to after alert is received
                return super.onJsAlert(view, url, message, result);
       }
于 2012-10-30T10:05:54.633 回答
1

编辑> 这可能不是最简单的解决方案,但它确实提供了额外的功能

当我创建类似的东西时,它适用于 4.1.2。警报给出了一个漂亮的、全息样式的弹出窗口。我使用了在线资源和webchromeclient(请参阅我之前的答案)。

但是,如果您想确保这有效,您可能需要查看Android Developers的在 Webview 页面中构建 Web 应用程序。它解释了JavaScriptInterface。您可以使用它从您的 HTML 页面(本地或在线)耦合 javascript,但让它执行本机 Java 代码。

EG 你可以像这样使用 HTML

<input type="button" value="Click Me!" onClick="showAndroidToast('Hello World!')" />

<script type="text/javascript">
    function showAndroidToast(toast) {
        Android.showToast(toast);
    }
</script>

添加这个类

public class JavaScriptInterface {
Context mContext;

/** Instantiate the interface and set the context */
    JavaScriptInterface(Context c) {
        mContext = c;
    }

    /** Show a toast from the web page */
    public void showToast(String toast) {
        Toast.makeText(mContext, toast, Toast.LENGTH_SHORT).show();
    }
}

之后,将此代码添加到您提供的示例中。

myWebView.addJavascriptInterface(new JavaScriptInterface(this), "Android");
于 2012-10-30T10:06:33.190 回答
-1

下面的代码来自我的生产环境并且完全可以工作,我已将html文件存储到我的assest文件夹中,然后将其访问到Activity.

代码:

String uri = "file:///android_asset/htmlpages/" + index + ".htm";
WebView wb = (WebView) findViewById(R.id.webView_Glossary);
wb.getSettings().setJavaScriptEnabled(true);
wb.loadUrl(uri);
于 2012-10-30T10:34:00.333 回答