【发布时间】:2023-03-27 22:58:01
【问题描述】:
我正在设计一个移动网站,同时考虑到所有领先的浏览器 - Safari、Chrome、Dolphin、Opera。
我想在页面导航/更改/请求新页面时显示“加载”元素。
我不能在锚标记上使用点击事件,因为preventDefault(); 存在很多。
我尝试了以下方法:
$(window).on('beforeunload', function() { ... });
但它在 Dolphin 或 Opera 中不起作用。
谁能推荐一个跨浏览器解决方案?
--
编辑:我意识到我问的不是很清楚,抱歉。我根据响应在这里创建了一个小提琴-http://jsfiddle.net/hiteshpachpor/7dadA/5/。该示例使用了事件冒泡。
现在这是我面临的问题。每次页面更改/导航时,我都会显示该加载程序 ($('.jacket').show();)。但是如果单击链接,我不希望它显示出来;我想在我的页面上执行其他操作。现在,在所有此类操作中添加 $('.jacket').hide(); 行就足够了,但出于扩展原因,它并不是非常理想。
这就是我评估 'beforeunload' 方法的原因,但没有运气,因为它不兼容跨浏览器。
有什么好的建议来解决这个问题?
【问题讨论】:
-
@Devima 这是一个单页应用还是有实际的页面加载?
-
为什么不能使用点击事件处理程序?
preventDefault()将阻止页面在链接点击时发生变化,但它不会阻止事件在 DOM 中冒泡。 -
@Jasper - 我最初的想法也是一样的。但这是我的限制:有不少事件使用
preventDefault()。随着项目的进展,我可能会在以后添加更多内容。如果我开始手动考虑这些事件/元素,那么它只会使我的代码非常僵化和静态。这迫使我首先评估onbeforeunload事件。但它似乎不适用于大多数移动浏览器。 -
这就是赏金的原因
标签: javascript jquery google-chrome opera dolphin-browser