Safari 跳过网站 header 并转到内容
Safari skips website header and goes to content
我注意到,当我在 iPhone 或 iPad 打开我的网站并转到文章页面时,浏览器以某种方式检测到文章的开头,省略了 header 和向下滚动到文章内容,因此用户没有机会看到我的网站 header 和位于我的 header 上方的广告。我怎样才能禁用 Safari 的这种行为或至少欺骗它以使其停留在我的页面顶部?
终于知道是什么原因了!但是谢谢你们的帮助和提示。
所以问题是在 Apple browsers/devices 上有一个事件 'popstate' 在加载页面时触发。这在 Windows Chrome、IE、Firefox 等中不会发生。它向下滚动的原因是我使用历史记录,当我向下滚动到另一篇文章。然后,当用户在他的浏览器中单击后退按钮时,将触发 'popstate' 事件,并且在该事件上我滚动到上一篇文章的开头。因此,由于在 Apple 连接的浏览器中,页面加载时有一个额外的 popstate 事件,它会立即将我滚动到第一篇文章。这是防止这种行为的技巧:
window.addEventListener('load', function () {
setTimeout(function () {
window.addEventListener('popstate', popStateHandler, false);
}, 0);
}, false);
我注意到,当我在 iPhone 或 iPad 打开我的网站并转到文章页面时,浏览器以某种方式检测到文章的开头,省略了 header 和向下滚动到文章内容,因此用户没有机会看到我的网站 header 和位于我的 header 上方的广告。我怎样才能禁用 Safari 的这种行为或至少欺骗它以使其停留在我的页面顶部?
终于知道是什么原因了!但是谢谢你们的帮助和提示。
所以问题是在 Apple browsers/devices 上有一个事件 'popstate' 在加载页面时触发。这在 Windows Chrome、IE、Firefox 等中不会发生。它向下滚动的原因是我使用历史记录,当我向下滚动到另一篇文章。然后,当用户在他的浏览器中单击后退按钮时,将触发 'popstate' 事件,并且在该事件上我滚动到上一篇文章的开头。因此,由于在 Apple 连接的浏览器中,页面加载时有一个额外的 popstate 事件,它会立即将我滚动到第一篇文章。这是防止这种行为的技巧:
window.addEventListener('load', function () {
setTimeout(function () {
window.addEventListener('popstate', popStateHandler, false);
}, 0);
}, false);