【问题标题】:iOS UiWebView / Page Visibility Api: "pageshow" event not firingiOS UiWebView / Page Visibility Api:“pageshow”事件未触发
【发布时间】:2014-06-07 14:45:36
【问题描述】:

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

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

The alert fires as expected in mobile safari when the tab is made active, or when safari is minimized and then re-shown.

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

谢谢...

【问题讨论】:

  • 对于任何想要查看触发的浏览器事件的人,这里有一个事件测试器:jsbin.com/runed/5 - 我怀疑可能有一种方法可以使用 setInterval 或 webkitRequestAnimationFrame 来检测页面何时显示。

标签: javascript ios html uiwebview mobile-safari


【解决方案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)? 应该对此有所帮助

【讨论】:

    【解决方案2】:

    我完全同意上面的答案。即使在 UIWebview 上无法触发 pageVisibilityChange 事件。还是可以通过原生代码检测出来,然后通过JS-bridge或者JS-binding技术通知JS。

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

    【讨论】:

      猜你喜欢
      • 2015-07-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-08
      • 1970-01-01
      • 1970-01-01
      • 2016-01-14
      • 2012-06-30
      相关资源
      最近更新 更多