【问题标题】:Disable the hardware back function with jQuery Mobile使用 jQuery Mobile 禁用硬件返回功能
【发布时间】:2012-07-11 04:59:46
【问题描述】:

我正在寻找一种方法来禁用后退按钮(Android 上的硬件,iPhone 上的软件),或将用户重定向到不同的页面(然后是上一个页面)。

我这样做的原因不是出于邪恶目的或任何其他目的。我正在开发一款考试软件。用户回答考试/调查/测验中的所有问题,提交表单,然后被带到一个页面以查看反馈。目前,如果他们点击硬件后退按钮,他们会看到提示数据已经提交的警告框,但他们仍然可以点击 OK 并被带回考试并重新提交,从而重新提交相同的结果或更改他们的答案并重新提交。

我正在寻找一种方法来禁用此功能,或者通过某种方式禁用后退按钮,或者将用户重定向到新页面。

有关该应用的一些信息。未使用 Ajax 提交考试表格。整个应用程序是一个 URL,无论您在哪个页面,URL 始终相同。通过重新加载该 URL,您将被带到登录页面(这是完全可以接受的)。

我已经研究过 HTML5 History 功能,但由于在较新版本的 Android 中缺乏支持,我无法使用它。我需要可以在 Android、iPhone,最好是 Windows Phone 7 上运行的东西。

【问题讨论】:

  • 现在测试我提供了额外的东西。

标签: jquery-mobile


【解决方案1】:

没有真正的方法可以禁用黑莓或 Android 上的硬件返回按钮。

您可以做的是维护一个在您的 back 处理程序中失效的会话变量,并在考试页面的 pagebeforeshow 事件中检查该会话变量。

【讨论】:

  • 非常感谢。这解决了我的问题。不知道为什么 jQuery Mobile 中的其他事件不会触发,例如 pagebeforeload,但是那个触发并成功了。它没有我想要的那么好,因为在它实际将页面更改为我想要的页面之前仍然会再次显示考试,但它确实有效。
  • page-x-load 事件在页面的生命周期中只触发一次 - 当 JQM 第一次将特定页面加载到 DOM 中时......用于后续转换 - 因为页面已经在 DOM 中page-x-show 事件被触发。
  • 在 pagebeforechange 中,您应该能够更改目标页面以完全阻止考试页面的显示。
  • pagebeforechange 在我的情况下不起作用。它加载到中间有加载指示器的白色屏幕,然后停止执行任何操作。可能与应用程序中的其他内容发生冲突。
【解决方案2】:

与问题略有相关,如果您使用带有Cordova/PhoneGap 的jQuery Mobile,您可以监听一个名为“backbutton”的事件触发。确保在“deviceready”之后绑定它。

示例如下:

document.addEventListener("backbutton", function (e) {
    e.preventDefault();
}, false);

【讨论】:

    【解决方案3】:

    您应该能够使用 JavaScript 捕获硬件后退按钮单击事件:

    $(document).bind('keydown', function(event) {
    
      if (event.keyCode == 27) { // 27 = 'Escape' keyCode (back button)
        event.preventDefault();
      }
    });
    

    【讨论】:

    【解决方案4】:

    要在 jQuery Mobile 中禁用 Back 按钮,请在页面的标题 div 中包含 data-backbtn="false"。

    您可以在 http://jquerymobile.com/demos/1.0a3/#docs/toolbars/docs-headers.html 上进行相同的测试

    为了修改功能,你可以有这样的东西:

    <a href="/#default" data-icon="back">
    

    这会将您每次重定向到默认页面。

    【讨论】:

    • 我不是在谈论禁用标题中的后退按钮。我说的是禁用返回的能力。
    • 它仍然没有帮助。这增加了一个我可以控制的后退按钮,这很好。但它仍然使硬件后退按钮不受控制,这意味着用户仍然可以返回考试并重新提交,从而改变他/她的分数。
    • 我认为除非您正在执行特定于设备的应用程序 - 不是 Web 应用程序,否则您无法控制硬件后退按钮。昨晚我尝试了各种选择,但无济于事。我的意思是这就是我的观点。请提供您的
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多