Bre*_*eak 12 javascript safari jquery mobile-safari
我有以下处理程序:
$(window).bind('pageshow', function() { alert("back to page"); });
Run Code Online (Sandbox Code Playgroud)
当我离开页面(通过按下链接)并返回页面(通过按"后退"按钮)时,不会调用alert()(IPad 2,iOS 5.1).
我做错了什么?我需要绑定的任何其他事件?
PS:有趣的是,在离开页面时正确接收了Pagehide.
您可以查看活动的persisted属性pageshow.初始页面加载时设置为false.从缓存加载页面时,它设置为true.
window.onpageshow = function(event) {
if (event.persisted) {
alert("back to page");
}
};
Run Code Online (Sandbox Code Playgroud)
出于某种原因,jQuery在事件中没有此属性.你可以从原始活动中找到它.
$(window).bind("pageshow", function(event) {
if (event.originalEvent.persisted) {
alert("back to page");
}
};
Run Code Online (Sandbox Code Playgroud)
这可能是一个缓存问题.当您通过"后退"按钮返回页面时,页面将从缓存中拉出(行为取决于浏览器).因此,您的JS将不会触发,因为页面已经在缓存中呈现,并且重新运行js可能对布局等有害.
您应该能够通过在响应中调整缓存标头或使用一些浏览器技巧来克服这个问题.
以下是该问题的一些链接:
编辑
这些都来自以上链接:
history.navigationMode = 'compatible';<body onunload=""><!-- This does the trick -->pageshow和的特殊事件pagehide."$(document).ready(handler)window.onunload = function(){};你在那里做的是绑定alert("back to page")作为回调的返回值.那不行.你需要绑定一个函数:
$(window).bind('pageshow', function() { alert("back to page"); });
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
21833 次 |
| 最近记录: |