【问题标题】:Android webapp, loading another HTMLAndroid webapp,加载另一个 HTML
【发布时间】:2020-08-04 01:59:24
【问题描述】:

我正在为使用 WebView 的简单登录\注册创建一个 Android 网络应用程序。 我的 HTML 页面有一个注册按钮(在 login.html 上),应该将用户从登录页面带到注册页面。

我的问题是,无论我使用什么方法从页面跳转,都无济于事。

我的登录.HTML:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="jquery-3.5.1.js"></script>
</head>
<body>
<link rel="stylesheet" href="css/style.css">
<form action="index.html" method="post">
    <div class="imgcontainer">
    </div>
    <h1>Login</h1>
    <div class="container">
        <label><b>Username</b></label>
        <input type="text" placeholder="Enter Username" name="uname" required>

        <label><b>Password</b></label>
        <input type="password" placeholder="Enter Password" name="psw" required>

        <button type="submit">Login</button>
        <label>
            <input type="checkbox" checked="checked" name="remember"> Remember me
        </label>
    </div>
    <div class="container">
        <span><p>New User?</p>
        <button type="button" id="regbtn">Register</button>
        </span>
    </div>
</form>
<script>
         $("#regbtn").on("click",function(){
             app.goToRegister();
         });

</script>
</body>
</html>

我创建goToRegister() 的方式:

    @JavascriptInterface
    public void goToRegister() {
        context.goToRegister();
    }
    public void goToRegister(){
        String reg = "register.html";
        //webView.loadUrl("javascript:myFunction(\""+reg+"\")");
        webView.loadUrl("file:///android_asset/register.html");
    }

我在function.js 上实现了相同的方法,并作为login.HTML 中的一个函数,都不起作用。 当然,当我尝试使用function.js 中的方法时,HTML 的按钮是不同的。

两个页面都在同一个本地项目上。 当我点击按钮时,什么也没有发生。

编辑:

我已启用所有必需的 javascript 选项:

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


        webViewJavaScriptInterface = new WebViewJavaScriptInterface(this);
        webView.addJavascriptInterface(webViewJavaScriptInterface,"app");
        webView.setLayerType(View.LAYER_TYPE_SOFTWARE,null);
        WebView.setWebContentsDebuggingEnabled(true);

【问题讨论】:

    标签: javascript android html


    【解决方案1】:

    你有这个错误:

     @JavascriptInterface
        public void goToRegister() {
            context.goToRegister();
        }
    

    这里的“上下文”没有声明“goToRegister()”方法。

    public class WebAppInterface {
        MainActivity mActivity;
    
    
        WebAppInterface(MainActivity a) {
            mActivity = a;
        }
    
    
      @JavascriptInterface
        public void goToRegister() {
            mActivity.goToRegister();
        }
    }
    

    希望它有效...祝你好运。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-08-18
      • 1970-01-01
      • 1970-01-01
      • 2011-10-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多