javascript中的pageShow事件

我有以下代码:

     $( function() { window.onload = function () { alert('This page was just hidden:'); } });    

Page 2

This is page 2.

但是pageShow事件没有在IE中触发。 知道为什么吗?

OnPageShow和OnPageHide是新的HTML5事件属性 ,因此只能享受有限的浏览器支持(在撰写本文时)

更高版本的现有浏览器更有可能支持它。 Firefox肯定会和Safari一样根据这篇文章 。

我找不到任何明确说明的东西,但我想说你正在使用的IE版本可能不支持这些事件。 您可以发布此信息以便澄清。

希望这可以帮助

您的代码不一致。 你正在使用jQuery.readyonloadonpageshow 。 似乎是开始重构过程的好地方。

你真的想要实现什么?

这是一个错误; 在body的标签中,事件的名称是“onpageshow”而没有“pageshow”。

 ...  ... 

对于IE页面显示事件不受支持。

从我的测试:

  • IE8 / 9不支持pageshow / pagehide
  • Chrome12会触发它们,但似乎没有页面缓存 – 它们的行为与加载/卸载相同
  • FF4按预期支持它们
  • iPad上的iOS按预期支持它们

你的jQuery代码永远不会被执行。 你应该在jQuery的“ready”事件中运行它:

 $( function() { $('#mypage').live('pageshow', function (event, ui) { alert('This page was just hidden: ' + ui.prevPage); }); }); 

旧版本的Internet Explorer不支持PageShow事件,这很可能是您遇到的问题。

取消window.onloadpageshow 。 无论你想在窗口加载,body加载或页面显示上执行什么,都将它们放在$(document).ready() ,它们将在页面加载后连续执行。

我正在使用FF 4.0.1

你的pageShow事件即使在此也不会触发。

点击这里

欲获得更多信息

更新: pageShowpageLoad之后触发。

最好使用onLoad

pageShow应该是onpageShow

pageshow事件在许多浏览器中不起作用,例如,如果在移动设备上的App中使用WebView或UIWebView。

相反,你需要一个四管齐下的攻击:

  1. 桌面页面和一些移动页面恢复生命时会发生onfocus

  2. 当iOS Safari恢复pageshow时会发生pageshow – 而不是UIWebView

  3. Windows Mobile IE11恢复生机时出现visibilitychange – 请参阅http://daniemon.com/tech/webapps/page-visibility/并尝试http://jsbin.com/runed/4编辑:看起来像WP8.1上的IE11现在支持pageshow事件。

  4. webkitRequestAnimationFrame检测移动应用程序内的页面是否重新聚焦。 需要解决方法,因为window.focus,visibilitychange和pageshow事件在Android应用程序(WebView)或iOS应用程序(UIWebView)中不起作用。

代码可能如下所示:

 window.addEventListener('focus', pageAwakened); window.addEventListener('pageshow', pageAwakened); window.addEventListener('visibilitychange', function() { !document.hidden && pageAwakened(); }); if (window.webkitRequestAnimationFrame && (/^iP/.test(navigator.platform) || /Android/.test(navigator.userAgent))) { webkitRequestAnimationFrame(webkitWake); } var lastTs; function webkitWake(timestamp) { if ((timestamp - lastTs) > 10000) { pageAwakened(); } lastTs = timestamp; webkitRequestAnimationFrame(webkitWake); } function pageAwakened() { console.log('awakened at ' + (new Date)); } 

如果您希望支持<= IE8或documentMode <= 8,则需要attachEvent进行焦点。

编辑:请注意,大多数现代浏览器(包括桌面IE11和桌面Edge)都支持pageshow事件。

 $(function(){ //your code }) 

是$(document).ready()的简写。 document.ready在加载DOM之后触发,在其中添加window.onload是不必要的。

IE不会触发“pageshow”事件,因为它无法识别它。