【问题标题】:Disable browser button until page finish loading禁用浏览器按钮,直到页面完成加载
【发布时间】:2013-12-24 02:45:29
【问题描述】:

我有一个 apex 应用程序,但是因为表单页面有很多数据要从单个记录中呈现,有时如果您没有耐心等待额外的 2-6 秒,您有时会单击浏览器后退按钮 a应用程序中的按钮,如果您单击其中任何一个。你会从应用程序中得到一个错误。

如果您不知道,Apex 确实支持 jquery。

我想添加一个 Javascript 来禁用任何按钮,包括浏览器按钮,直到我的应用程序中的页面完成加载。

我在 google 上进行了一些搜索,但没有一个显示出不错的解决方案。

我什么都试过了,因为我不知道怎么做。我对 Jquery 的了解非常有限。

你的帮助意义重大

谢谢

【问题讨论】:

  • 抱歉,您不能禁用浏览器按钮。
  • 修复您的应用程序以处理这种情况。
  • 重新设计应用程序以向用户提供有意义的反馈?

标签: javascript jquery browser oracle-apex


【解决方案1】:

理想的方法是在屏幕上显示一个模态弹出对话框,防止用户点击屏幕上的任何内容。

jQuery UI 模态对话框演示:http://jqueryui.com/resources/demos/dialog/modal.html

在该模式中,显示类似“正在加载页面。请稍候。”

不,您不能禁用浏览器按钮。这是一个禁忌。

【讨论】:

  • Modal 不会阻止他们点击浏览器按钮!
  • 我没有在答案中提到这一点。我说,做不到。对我来说,这是一个答案:)
  • 我认为这是一个很好的。问题似乎是用户认为它已经挂了。提供加载反馈似乎是一个合理的解决方案。
【解决方案2】:

您实际上并不希望能够禁用浏览器按钮。这意味着任何人都可以。想象一下这样做的攻击站点。那将是一场噩梦。

您可以做的最接近的事情是在 beforeunload 上绑定,但这可能不会有太大帮助。否则让后端处理得更好。

我认为 naveen 的回答很好。这是您应该考虑实施的事情,但我认为无论如何让后端能够适应用户的不耐烦是一个好主意。在这种情况下,允许逐步加载数据可能会很好,或者至少在取消导航时不会引发错误。我不知道你的系统设计,所以我不能在这方面提出具体的建议。

【讨论】:

    【解决方案3】:

    无法禁用浏览器按钮,但您可以添加代码以禁用客户端/服务器端的输入。

    在 HTML 中禁用:

    <button id="mybutton" disabled="disabled"></button>
    

    在 javascript 中禁用:

    document.getElementById('mybutton').disabled=true;
    

    用 jQuery 禁用:

    $("#mybutton").attr("disabled","disabled");
    

    覆盖窗口卸载:

    <script language="JavaScript">
        window.onbeforeunload = confirmClose;
        function confirmClose() {
            return "Are you sure to close this page?";
        }
    </script>
    

    【讨论】:

      猜你喜欢
      • 2018-01-25
      • 2010-10-24
      • 2020-07-05
      • 1970-01-01
      • 1970-01-01
      • 2014-08-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多