问题标签 [pageshow]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javascript - html pageshow 和 load 事件有什么区别?
HTML5 有一个pageshow 事件。在什么情况下它的工作方式与身体的onload
处理程序不同?
android - Android 2.2 中缺少 PageShow 事件
我在使用 Android 2.2 和 2.3.3 avd/phone 时遇到了一个问题,但如果我使用英特尔 atom 图像进行 avd 则不会。我正在使用 phonegap 2.3.0 和 jqm 1.3.0。我错过了页面上的 pageshow 事件,并且我的应用程序损坏了,这意味着导航不再起作用:
它缺少 pgLogin 的 pageshow 事件并且导航被破坏。我绑定:
正如您在日志中看到的,我从 jqm 获得移动初始化事件,我从 phonegap 和第一页获得设备就绪事件:pgSplash 触发所有事件:初始化、显示前页面、页面显示。但在那之后它就坏了。在 4.1 模拟器 /galaxy 选项卡设备上它可以正常工作。
jquery-mobile - 页面加载时的 jQuery Mobile 对话框
开发我的第一个 jQuery Mobile 应用程序。有一个 localStorage 值必须在整个应用程序中都有一个值,所以我点击了 pageshow 事件来检查这个值:
这在浏览各个页面时有效,但在第一页加载时永远不会被调用。我尝试将上面的 If 语句再次复制到我添加 pageshow 侦听器的部分下方,但它具有显示对话框、隐藏它然后再次显示它的效果。
在第一页上,似乎打开对话框正在触发 pageshow(考虑到我的选择器,这很奇怪),这反过来又触发了另一个对话框。有没有人有关于如何解决这个问题的建议,或者有更好的方法来解决整个问题?
更新#1:我试过了
但它与我最初的问题具有相同的效果,即启动对话框,然后隐藏它,然后再次显示它。似乎以某种方式启动对话框正在触发 pageshow 事件,即使我试图在我的选择器中过滤掉它。请注意,如果您删除转换:“无”选项,则根本不会出现对话框。
更新#2:我还尝试创建一个空白初始页面,然后进行简单的页面转换
但它仍然没有正确的行为。在这种情况下,它确实将我带到了下一页,但 pageshow 事件没有触发,因为我的对话框没有出现。我知道它没有触发,因为我可以从导航菜单中选择另一个页面并且确实出现了对话框。
更新#3:我更改了我的选择器,我在其中附加了 pageshow 侦听器。我没有选择 where data-role="page",而是通过 id 选择特定页面。然后我重新尝试了我在前两次更新中描述的两种方法,但它仍然无法正常工作。首先,当我尝试使用 allowSamePageTransition 刷新初始页面时,似乎 pageshow 触发了两次,因为对话框启动了两次。然后,当我尝试使用空白初始页面,然后在附加 pageshow 侦听器后立即执行重定向时,什么也没有发生,对话框也永远不会出现。如果我导航到任何其他页面,对话框将按预期工作。我不明白为什么第一页这么麻烦。
javascript - JavaScript - bfcache/pageshow 事件 - event.persisted 总是设置为 false?
在标准的 Java / SpringMVC / JSP / jQuery web-app 中,我试图检测“Back”(或 history.go(-1))事件,以便在以下情况下刷新(AJAX)摘要组件/面板内容我返回一个页面(我们可以在其中更改摘要组件显示的后端数据)。
我在 JavaScript 中尝试了以下操作(按照 StackExchange 上的一些帖子重新了解如何实现这一点):
我正在运行 OpenSUSE Linux,并在 FireFox 和 Chrome(最新版本)上进行了尝试,但每次将事件的persisted
属性设置为false
(我可以在 JavaScript 控制台和从上述代码中弹出的警报中看到这一点)。每次,我的意思是,无论它是从服务器加载还是通过后退按钮(或“后退”链接)再次显示。
如果页面通过“后退”按钮或history.go(-1)
调用显示,我的意图是进行 AJAX 调用以使用来自服务器的更新数据重新加载摘要组件/面板。
我还尝试设置一个卸载处理程序(什么都不做)以防止页面被放入 bfcache 但它似乎仍然显示一个 bf-cached 版本并且event.persisted
(or event.originalEvent.persisted
) 设置为false
.
此属性是否在 Linux 上正确管理?我在我的代码中做一些愚蠢的事情吗?任何帮助或想法将不胜感激,谢谢!
jquery - 如何使用 JQuery Mobile 在每次访问页面时更新滑块 Web 控件
我正在创建一个 JQuery Mobile Web 应用程序,在一个页面上我有 javascript,它获取存储在 HTML5 本地存储中的值并使用它们的值更新页面上的 Web 控件。Web 控件之一是滑块控件。
每次访问页面时,我都需要执行 javascript,以便从本地存储中正确更新控件。我发现在每个页面上触发的唯一适用的 JQuery 事件是 pageshow 和 pagebeforshow 事件,因此我尝试绑定代码以在这些事件期间执行。示例如下:
问题是尝试引用滑块时出现错误:0x800a01b6 - JavaScript 运行时错误:对象不支持属性或方法“滑块”
在更改默认值后,我需要刷新滑块 Web 控件,否则它不会在视觉上发生变化。
这就是问题所在。每次页面加载和更新滑块 Web 控件时如何运行脚本而不会出现错误?我觉得我必须越过障碍才能让 jQuery Mobile 处理本应如此简单的事情。
jquery - 如何将变量插入jqm pageshow函数
我不确定这是否可能,但我想知道如何将页面 id 传递给 pageshow 函数,如下所示。我怀疑这是错误的方法,但答案暗示了我。使用此示例传递页面并在pageshow中附加页面 ID - 获取 #qanda_entry_1或#qanda_entry_2等,它们对应于一个文档中的一系列页面。
更新:来自 DGS 的代码如下
页面转换正在发生,但没有更新或呈现页面。我的数据来自全局变量“articles_data”。我看不到点击函数中'article'的值如何传递到新页面?警报“警报(文章);” 没有在 pageshow 上被解雇。
另外 - 这是一个多页文档。
我的listview链接结构是动态生成的
ETC
javascript - 如果从 pageshow 事件设置 image.src 并返回同一页面,则 jquery image.load 事件不会触发
我的移动 Web 应用程序出现以下情况:
- 我在页面上有一个名为 srcImage 的 javascript 图像。
- 我有设置为在加载 javascript 图像时触发的 javascript 代码。我的理解是,只要将 srcImage.src 设置为有效图像,就应该触发此事件。
- 我在每次访问页面时触发的页面上有一个 jquery mobile pageshow 事件。在这种情况下,我将 srcImage.src 发送到一个有效的图像。
我遇到的问题是,如果我回到页面(在访问过一次之后),那么 srcImage 的加载事件不会在 IE 10 中触发。我的理解是在这种情况下应该触发加载事件,但它是不是。有人可以解释为什么吗?
/li>
javascript - jquery图像加载功能没有被正确调用
我正在开发的移动 Web 应用程序中遇到以下问题:在 javascript 中,我有一个 Image() 控件,并且我有一个附加到图像控件的事件,该事件应在图像加载时触发。在页面的“pageshow”事件中,我将 Image() 的 src 属性设置为有效图像。如果我在访问该页面一次后返回该页面,则图像的加载事件不会触发。我已经看到几个线程说这可能是由缓存的图像引起的,但就我而言,我很确定这不是问题。为什么图像的加载事件没有触发,我怎样才能让它正常工作?
代码如下:
javascript - JQuery Mobile,通过 window.location 重定向可防止 pageshow 事件
我有一个 JQuery Mobile 应用程序,其中有许多相互链接的页面。如果我在页面 A 上放置链接并将 href 设置为页面 B,则此脚本可以正常工作:
但是,如果我在页面 A 上放置一个按钮并为 onclick 事件编写此代码:
pageshow 事件将不再引发!问题出在哪里?我怎样才能使用 window.location 并且仍然能够捕捉到 pageshow 事件?
javascript - 使用移动 Safari 浏览器时如何防止从缓存中重新加载网页?
Mobile Safari 使用一种特殊的缓存机制Page Cache
(这里),它基本上保持当前页面处于活动状态,但当我们导航到另一个页面时会休眠。back
这样,当用户按下按钮时,它可以立即以最新状态显示上一页。
这对于导航和浏览网页很有用,但对于特殊情况,这会变得很烦人,因为每次用户导航到该页面时,您可能需要获取该页面的新副本。(在我的情况下,我必须页面:登录和主页)。
我完全知道没有什么能阻止用户打开同一应用程序的多个选项卡。我对此并不担心。
防止页面被缓存的跨浏览器解决方案无济于事,因为 Safari 保持页面打开但不可见和暂停。
window.onpageshow和处理event.persisted
没有帮助,因为浏览器似乎由于某些原因第二次(当您按下按钮时)没有执行onpageshow
事件back
。
对于那些不知道事件是什么的人请注意onpageshow
:Apple 不鼓励使用load
和unload
事件,因为对于页面缓存的概念,这些事件没有明确的意义。所以,onpageshow
应该做我们对load
事件的期望。