我有一个带有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是否不可见所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)