问题标签 [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.

0 投票
2 回答
2676 浏览

javascript - html pageshow 和 load 事件有什么区别?

HTML5 有一个pageshow 事件。在什么情况下它的工作方式与身体的onload处理程序不同?

0 投票
1 回答
249 浏览

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 选项卡设备上它可以正常工作。

0 投票
3 回答
8895 浏览

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 侦听器后立即执行重定向时,什么也没有发生,对话框也永远不会出现。如果我导航到任何其他页面,对话框将按预期工作。我不明白为什么第一页这么麻烦。

0 投票
3 回答
18139 浏览

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 上正确管理?我在我的代码中做一些愚蠢的事情吗?任何帮助或想法将不胜感激,谢谢!

0 投票
2 回答
314 浏览

jquery - 如何使用 JQuery Mobile 在每次访问页面时更新滑块 Web 控件

我正在创建一个 JQuery Mobile Web 应用程序,在一个页面上我有 javascript,它获取存储在 HTML5 本地存储中的值并使用它们的值更新页面上的 Web 控件。Web 控件之一是滑块控件。

每次访问页面时,我都需要执行 javascript,以便从本地存储中正确更新控件。我发现在每个页面上触发的唯一适用的 JQuery 事件是 pageshow 和 pagebeforshow 事件,因此我尝试绑定代码以在这些事件期间执行。示例如下:

问题是尝试引用滑块时出现错误:0x800a01b6 - JavaScript 运行时错误:对象不支持属性或方法“滑块”

在更改默认值后,我需要刷新滑块 Web 控件,否则它不会在视觉上发生变化。

这就是问题所在。每次页面加载和更新滑块 Web 控件时如何运行脚本而不会出现错误?我觉得我必须越过障碍才能让 jQuery Mobile 处理本应如此简单的事情。

0 投票
1 回答
195 浏览

jquery - 如何将变量插入jqm pageshow函数

我不确定这是否可能,但我想知道如何将页面 id 传递给 pageshow 函数,如下所示。我怀疑这是错误的方法,但答案暗示了我。使用此示例传递页面并在pageshow中附加页面 ID - 获取 #qanda_entry_1#qanda_entry_2等,它们对应于一个文档中的一系列页面。

更新:来自 DGS 的代码如下

页面转换正在发生,但没有更新或呈现页面。我的数据来自全局变量“articles_data”。我看不到点击函数中'article'的值如何传递到新页面?警报“警报(文章);” 没有在 pageshow 上被解雇。

另外 - 这是一个多页文档。

我的listview链接结构是动态生成的

ETC

0 投票
1 回答
404 浏览

javascript - 如果从 pageshow 事件设置 image.src 并返回同一页面,则 jquery image.load 事件不会触发

我的移动 Web 应用程序出现以下情况:

  1. 我在页面上有一个名为 srcImage 的 javascript 图像。
  2. 我有设置为在加载 javascript 图像时触发的 javascript 代码。我的理解是,只要将 srcImage.src 设置为有效图像,就应该触发此事件。
  3. 我在每次访问页面时触发的页面上有一个 jquery mobile pageshow 事件。在这种情况下,我将 srcImage.src 发送到一个有效的图像。
  4. 我遇到的问题是,如果我回到页面(在访问过一次之后),那么 srcImage 的加载事件不会在 IE 10 中触发。我的理解是在这种情况下应该触发加载事件,但它是不是。有人可以解释为什么吗?

    /li>
0 投票
1 回答
165 浏览

javascript - jquery图像加载功能没有被正确调用

我正在开发的移动 Web 应用程序中遇到以下问题:在 javascript 中,我有一个 Image() 控件,并且我有一个附加到图像控件的事件,该事件应在图像加载时触发。在页面的“pageshow”事件中,我将 Image() 的 src 属性设置为有效图像。如果我在访问该页面一次后返回该页面,则图像的加载事件不会触发。我已经看到几个线程说这可能是由缓存的图像引起的,但就我而言,我很确定这不是问题。为什么图像的加载事件没有触发,我怎样才能让它正常工作?

代码如下:

0 投票
1 回答
6604 浏览

javascript - JQuery Mobile,通过 window.location 重定向可防止 pageshow 事件

我有一个 JQuery Mobile 应用程序,其中有许多相互链接的页面。如果我在页面 A 上放置链接并将 href 设置为页面 B,则此脚本可以正常工作:

但是,如果我在页面 A 上放置一个按钮并为 onclick 事件编写此代码:

pageshow 事件将不再引发!问题出在哪里?我怎样才能使用 window.location 并且仍然能够捕捉到 pageshow 事件?

0 投票
2 回答
7611 浏览

javascript - 使用移动 Safari 浏览器时如何防止从缓存中重新加载网页?

Mobile Safari 使用一种特殊的缓存机制Page Cache这里),它基本上保持当前页面处于活动状态,但当我们导航到另一个页面时会休眠。back这样,当用户按下按钮时,它可以立即以最新状态显示上一页。

这对于导航和浏览网页很有用,但对于特殊情况,这会变得很烦人,因为每次用户导航到该页面时,您可能需要获取该页面的新副本。(在我的情况下,我必须页面:登录和主页)。

我完全知道没有什么能阻止用户打开同一应用程序的多个选项卡。我对此并不担心。

防止页面被缓存的跨浏览器解决方案无济于事,因为 Safari 保持页面打开但不可见和暂停。

window.onpageshow和处理event.persisted没有帮助,因为浏览器似乎由于某些原因第二次(当您按下按钮时)没有执行onpageshow事件back

对于那些不知道事件是什么的人请注意onpageshow:Apple 不鼓励使用loadunload事件,因为对于页面缓存的概念,这些事件没有明确的意义。所以,onpageshow应该做我们对load事件的期望。