javascript– 仅使用JS确定WebView是否不可见

javascript– 仅使用JS确定WebView是否不可见,第1张

概述我有一个带有webView的Android测试应用程序,如下所示:<WebViewandroid:alpha="0"android:id="@+id/myWebView"android:layout_width="match_parent"android:layout_height="match_parent"/>我的主要活动加载了一

我有一个带有webVIEw的Android测试应用程序,如下所示:

<WebVIEw        androID:Alpha="0"        androID:ID="@+ID/myWebVIEw"        androID:layout_wIDth="match_parent"        androID:layout_height="match_parent" />

我的主要活动加载了一个我运行Js内容的页面.使用Js启用Js:

webSettings.setJavaScriptEnabled(true);

我的应用程序上有一个按钮,可以将Alpha值从0切换为1(显示/隐藏webVIEw).

是否有任何“创造性”方式来检测Js方面的变化?

我试过的事情:

>检查requestAnimationFrame帧速率变化.
> Visibility API

更新:

澄清,我正在寻找一个Js Only解决方案,实际的Js代码是在WebVIEw环境中使用的SDK.

我无法控制AndroID应用程序,完全控制WebVIEw内容.

解决方法:

你可以继承androID的WebVIEw,覆盖它的setAlpha方法并添加一些逻辑让网页知道当前的Alpha值.

这是一个简化的例子:

import androID.annotation.Suppresslint;import androID.content.Context;import androID.util.AttributeSet;import androID.webkit.WebVIEw;public class MyWebVIEw extends WebVIEw {    public MyWebVIEw(Context context) {        super(context);        init();    }    public MyWebVIEw(Context context, AttributeSet attrs) {        super(context, attrs);        init();    }    public MyWebVIEw(Context context, AttributeSet attrs, int defStyleAttr) {        super(context, attrs, defStyleAttr);        init();    }    public MyWebVIEw(Context context,                     AttributeSet attrs,                     int defStyleAttr,                     int defStyleRes) {        super(context, attrs, defStyleAttr, defStyleRes);        init();    }    @Suppresslint("SetJavaScriptEnabled")    private voID init() {        getSettings().setJavaScriptEnabled(true);    }    @OverrIDe    public voID setAlpha(float Alpha) {        super.setAlpha(Alpha);        propagateAlphaToWebPage(Alpha);    }    private voID propagateAlphaToWebPage(float Alpha) {        // setWebVIEwAlpha is a Js function that should be defined in your HTML's Js     String Jssnippet = "setWebVIEwAlpha("+Alpha+");";    if (androID.os.Build.VERSION.SDK_INT >= androID.os.Build.VERSION_CODES.KITKAT) {        evaluateJavaScript(Jssnippet, null);    } else {        loadUrl("JavaScript:"+Jssnippet);    }}}

您可能会发现有用的其他相关问题:

> Android WebView – detect whether a JS function is defined
> Android Calling JavaScript functions in WebView
> Declaring a custom android UI element using XML

总结

以上是内存溢出为你收集整理的javascript – 仅使用JS确定WebView是否不可见全部内容,希望文章能够帮你解决javascript – 仅使用JS确定WebView是否不可见所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1104866.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-28
下一篇 2022-05-28

发表评论

登录后才能评论

评论列表(0条)

保存