当前位置: 首页 > 知识库问答 >
问题:

当网站在web视图中响应或更改其页面时,我们如何运行一个函数?

岳时铭
2023-03-14

我的问题是,如果一个网站上有一个按钮,那么当用户点击它时,它就会出现在某个页面上。我想在信息显示时启用功能。请帮帮我.

私有WebView;私有ProgressBar ProgressXML;私有RelativeLayout WaitPageXML;//等待用户专用RelativeLayout NinternetPage的页面;//不显示您的连接的页面

onCreate(@nullable Bundle savedInstanceState){super.onCreate(savedInstanceState);

     setContentView(R.layout.phone_number);

     webView = findViewById(R.id.WebViewXml);
     progressXml = findViewById(R.id.progressXml);
    WaitPageXml = findViewById(R.id.WaitPageXml);


    webView = findViewById(R.id.WebViewXml);
    webView.getSettings().setJavaScriptEnabled(true);
    webView.getSettings().setBuiltInZoomControls(true);
    webView.getSettings().setUseWideViewPort(true);
    webView.setInitialScale(15);
    WebSettings mWebSettings = webView.getSettings();
    webView.getSettings().setUseWideViewPort(true);
    WebSettings webSettings = webView.getSettings();
    webView.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
    webView.getSettings().setAllowFileAccess(true);
    webView.getSettings().setDomStorageEnabled(true);
    webView.getSettings().setPluginState(WebSettings.PluginState.ON);
    webView.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
    webView.getSettings().setSupportMultipleWindows(true);
    webView.getSettings().setSupportZoom(true);
    mWebSettings.setAllowFileAccess(true);
    mWebSettings.setAllowFileAccess(true);
    mWebSettings.setAllowContentAccess(true);
    webView.addJavascriptInterface(new MyJavaScriptInterface(),
            "android");

WebView.SetWebViewClient(新建WebViewClient(){

            @Override
            public void onPageStarted(WebView view, String url, Bitmap 
            favicon) {
                if (isOnline()) {
                    progressXml.setVisibility(View.VISIBLE);
                    WaitPageXml.setVisibility(View.VISIBLE);
                    super.onPageStarted(view, url, favicon);

                } else {
                    super.onPageStarted(view, url, favicon);
                    NoInternetPage.setVisibility(View.VISIBLE);
                }


            }

            @Override
            public void onPageFinished(WebView view, String url) {

                progressXml.setVisibility(View.GONE);
                WaitPageXml.setVisibility(View.GONE);
                NoInternetPage.setVisibility(View.GONE);

        });

webview.loadURL(“https://......”);

@Override
public void onBackPressed() {

    if (webView.canGoBack()) {
        webView.goBack();
    } else {
        super.onBackPressed();

    }

}

公共布尔isOnline(){//用于测试连接....ConnectivityManager cm=(ConnectivityManager)getSystemService(context.Connectivity_Service);@SuppressLint(“MissingPermission”)NetworkInfo netInfo=cm.GetActiveNetworkInfo();if(netInfo!=null&netInfo.IsConnectiveDorConnecting()){return true;}else{return false;}}

不幸的是,站点没有执行rosponse

共有1个答案

吕成业
2023-03-14

我很难从你的问题中准确地判断出你想要什么,但从我的解释来看,你需要在网页中按一个按钮来触发某种UI更新(弹出窗口、字段更新等)。有几种不同的方法可以做到这一点,我不完全确定哪一种是你想要完成的最好的解决方案

然而,鉴于您将此作为Android问题发布,并提供了包含设置web视图的工作的源代码清单,我将假设您正在寻找一种方法,将按钮按下从HTML页面连接到一些Java回调。如果是这样的话,那你已经走了一半了。当您调用webview.addJavaScriptInterface(新的MyJavaScriptInterface(),“Android”);时,它将MyJavaScriptInterface的实例作为全局JavaScript变量注入。

您没有列出MyJavaScriptInterface的实现,因此我们假设它是一个用JavaScriptInterface注释声明的类,目的是传递给AddJavaScriptInterface。注释使用JavaScriptInterface的类将其公共方法公开给JavaScript。假设您将您的类声明为这样:

java prettyprint-override">@JavascriptInterface
class MyJavaScriptInterface {
    public void doSomething() {
        Log.d("MyJavaScriptInterface", "Got a callback from JavaScript");
    }
}

由于在设置WebView时添加了一个名为“Android”的该类实例,因此现在可以使用Android.doSomething在JavaScript中调用doSomething函数。例如,假设这是您调用webview.loadURL(“https://.......”)时加载的HTML;:

<html>
    <head>
        <script>
            function onButtonPressed() {
                android.doSomething();
            }
        </script>
    </head>
    <body>
        <button onclick="onButtonPressed();">Click me!</button>
    </body>
</html>

在这种情况下,单击页面上的按钮将一直调用到Java类中的DoSomething。从那里,你可以做任何你需要做的事情来显示你的信息。请注意,dosomething不需要是void;如果您需要显示由JavaScript处理但本机检索的信息,它还可以返回数据。

要获得更多帮助,您可以在这里查看有关此主题的Android开发人员指南。

 类似资料:
  • 我正在寻找一种方法,在运行时改变JavaFX FXML应用程序的视图,并保存结果,以便在下次应用程序启动时显示。有办法吗?我在网上搜索,但没有找到任何解决方案!例如:我有一个函数,可以在GridPane中添加标签,并保存新添加的标签。在我的应用程序下一次启动时,新标签出现了。这是一个数据库应用程序,用户可以为自定义数据添加新的数据库字段。

  • 问题内容: 我是Flask和python的新手。我有一堆视图以jsonify()格式返回字典。对于这些视图,我想添加一个after_request处理函数以更改响应,以便可以向该字典添加键。我有: 我得到的错误是“ TypeError:列表索引必须是整数,而不是str”。请求完成后,如何更改响应字典并添加密钥? 问题答案: 是WSGI对象,这意味着响应的主体必须是可迭代的。对于响应来说,这只是一个

  • 什么是网格视图? 很多网页都是基于网格设计的,这说明网页是按列来布局的。 使用网格视图有助于我们设计网页。这让我们向网页添加元素变的更简单。 响应式网格视图通常是 12 列,宽度为100%,在浏览器窗口大小调整时会自动伸缩。 以上实例包含两列。 12 列的网格系统可以更好的控制响应式网页。 首先我们可以计算每列的百分比: 100% / 12 列 = 8.33%。 在每列中指定 class, cla

  • 我最近开始使用静态网站godaddy.com没有cms。这是我上传的一个基本网站,只有html/js/css。 当人们键入“website.com/page”时,他们得到404未找到。当他们输入“website.com/page.html”时,他们会得到正确的页面。 如何修复我的网站,让用户只需键入“website/page”,而不必使用php而被迫键入“website/page.html”? 在

  • 我正在尝试在javafx webview中打开一个网页。引发致命错误异常 错误是这样的- Java运行时环境检测到致命错误: pc=0x6e98299b,pid=4116,tid=4224时出现异常\u访问\u冲突(0xc0000005) JRE版本:7.0_10-b18JavaVM:JavaHotSpot(TM)Client VM(23.6-b04混合模式,共享windows-x86)问题帧:V

  • 首先感谢你阅读我的问题。 我想知道如何在每次调整窗口大小时调用javascript中的函数。 这段代码对我不起作用,因为控制台{console.log('it runn')语句可以使用它,但不是函数中的,我希望您能解决我的问题。