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

Javascript iOS UiWebView/页面可见性Api:“;pageshow“;事件未触发,javascript,ios,html,uiwebview,mobile-safari,Javascript,Ios,Html,Uiwebview,Mobile Safari,我试图使用页面可见性Api来检测iOS中何时显示web内容。我有简单的JS: 当选项卡处于活动状态时,或当safari最小化并重新显示时,该警报将按预期在mobile safari中触发 但是,如果我将web内容托管在UiWebView中,则不会触发事件。还有其他人遇到过这个问题吗?如果有的话,有什么解决办法吗 谢谢…UIWebView不支持该事件,但是您可以自行从应用程序本机触发该事件 这就是如何从Objective-C调用JavaScript函数 然后,您只需使用上面的代码在处理从暂停状态

我试图使用页面可见性Api来检测iOS中何时显示web内容。我有简单的JS:

当选项卡处于活动状态时,或当safari最小化并重新显示时,该警报将按预期在mobile safari中触发

但是,如果我将web内容托管在UiWebView中,则不会触发事件。还有其他人遇到过这个问题吗?如果有的话,有什么解决办法吗


谢谢…

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

这就是如何从Objective-C调用JavaScript函数

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


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


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

对于任何想要查看触发的浏览器事件的人,这里有一个事件测试程序:-我怀疑可能有一种方法可以使用setInterval或webkitRequestAnimationFrame来检测页面何时显示。
    window.addEventListener("pageshow", function(){
        alert("page shown");
    }, false);