我有以下代码:
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<script src="http://code.jquery.com/jquery-1.4.4.min.js"></script>
<script type="text/javascript" language="javascript">
$( function() {
window.onload = function () {
alert('This page was just hidden:');
}
});
</script>
</head>
<body pageshow="alert('Done');">
<div id="mypage" data-role="page" data-theme="b">
<div data-role="header">
<h1>Page 2</h1>
</div>
<div data-role="content">
<p>This is page 2.</p>
</div>
</div>
</body>
</html>
但pageShow
事件未在IE中触发。知道为什么吗?
答案 0 :(得分:21)
OnPageShow和OnPageHide是new HTML5 event attributes,因此只能享受有限的浏览器支持(在撰写本文时)
以后版本的现有浏览器更有可能支持它。根据{{3}},Safari肯定会和Safari一样。
我找不到任何明确说明的内容,但我想说你正在使用的IE版本可能不支持这些事件。您可以发布此信息以便澄清。
希望这有帮助
答案 1 :(得分:8)
您的代码不一致。您同时使用jQuery.ready
,onload
,onpageshow
。似乎是开始重构过程的好地方。
你真正想要实现的目标是什么?
答案 2 :(得分:4)
这是一个错误;在body的标签中,事件的名称是“onpageshow”而没有“pageshow”。
...
<body onpageshow="alert('Done');">
...
对于IE页面显示事件不受支持。
答案 3 :(得分:1)
您的jQuery代码永远不会被执行。你应该在jQuery的“ready”事件中运行它:
$( function() {
$('#mypage').live('pageshow', function (event, ui) {
alert('This page was just hidden: ' + ui.prevPage);
});
});
答案 4 :(得分:1)
答案 5 :(得分:1)
从我的测试:
答案 6 :(得分:0)
取消window.onload
和pageshow
。无论你想在窗口加载,身体加载或页面显示上执行什么,都将它们放在$(document).ready()
中,一旦页面加载,它们将被连续执行。
答案 7 :(得分:0)
我正在使用FF 4.0.1
你的pageShow事件即使在此也不会触发。
了解更多信息
<强>更新强>
pageShow
之后pageLoad
点火。
最好使用onLoad
。
pageShow
应为onpageShow
答案 8 :(得分:0)
页面显示事件在许多浏览器中都不起作用,例如如果在移动设备上的应用程序中使用WebView或UIWebView。
相反,你需要一个四管齐下的攻击:
onfocus
pageshow
- 而不是UIWebView
visibilitychange
- 请参阅http://daniemon.com/tech/webapps/page-visibility/并尝试http://jsbin.com/runed/4编辑:看起来WP8.1上的IE11现在支持pageshow事件。< / p>
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));
}
如果您希望支持&lt; = IE8或documentMode&lt; = 8,则需要使用attachEvent进行焦点。
编辑:请注意,大多数现代浏览器(包括桌面IE11和桌面边缘)都支持pageshow事件。
答案 9 :(得分:-1)
$(function(){ //your code })
是$(document).ready()的简写。在加载DOM之后,document.ready会激活,在其中添加window.onload是不必要的。
IE不会触发“pageshow”事件,因为它无法识别它。