iOS UiWebView /页面可见性Api:“pageshow”事件未触发

时间:2014-04-23 00:53:58

标签: javascript ios html5 uiwebview mobile-safari

我正在尝试使用Page Visibility Api来检测何时在iOS中显示Web内容。我有简单的JS:

    window.addEventListener("pageshow", function(){
        alert("page shown");
    }, false);

当标签处于活动状态时,或者当safari被最小化然后重新显示时,警报会在移动Safari中按预期触发。

但是,如果我在UiWebView中托管Web内容,则事件不会触发。还有其他人遇到过这个问题吗?如果是这样的任何解决方法?

...谢谢

2 个答案:

答案 0 :(得分:1)

UIWebView不支持该事件,但您可以考虑从应用程序本机触发事件

这是如何从Objective-C调用JavaScript函数的 Objective C send data to phonegap and call javascript function

然后,您只需使用上面的代码在处理启动或重启暂停的应用程序时通知webview

Objective C: How to check if application is currently active (i.e. user is using it)?应该提供帮助

答案 1 :(得分:0)

我完全赞同上面的答案。即使在UIWebview上无法触发pageVisibilityChange事件。您仍然可以通过本机代码检测它,然后通过JS-bridge或JS绑定技术通知JS。

还有其他方法可以通过setInterval实现此功能。您可以在应用程序午餐开始时初始化当前时间戳的变量,然后在每个间隔回调函数中将此变量增加一秒。你需要将当前时间戳与这个变量进行比较,如果它们差异超过一秒,则表示setInterval回调已被阻止!因此,您可以指示该页面已离开至少serval秒