【问题标题】:trigger jQuery function after location.reload() completes在 location.reload() 完成后触发 jQuery 函数
【发布时间】:2009-12-24 01:41:23
【问题描述】:

我有一个 Rails 应用程序,它允许用户通过 jQuery 模式表单登录。登录后,我使用 location.reload() 刷新原始页面。

此时,我正在尝试创建一个新的 jQuery 对话框。如何在 location.reload() 执行完成后打开对话框?

现在对话框在 location.reload() 完成之前加载。这导致对话框消失。

【问题讨论】:

    标签: jquery ruby-on-rails jquery-ui-dialog unobtrusive-javascript


    【解决方案1】:

    你不能。

    调用location.reload() 将重新加载整个页面。完成后,原始页面中的 Javascript 就完全消失了。

    如果您仍然要重新加载整个页面,那么首先使用 AJAX 有什么意义?
    您应该使用常规回发执行登录,然后添加发出 Javascript 的服务器端代码以在登录回发中显示对话框。

    您可以创建一个小弹出窗口,在重新加载后使用window.opener 与原始页面进行通信,但这是一个非常丑陋的想法,并且容易受到弹出窗口阻止程序的攻击。

    【讨论】:

      【解决方案2】:

      也许您可以尝试通过附加 ?var=value 来通过 url 传递一个变量。

      然后在你的

      $(document).ready(function() {
      
      }); 
      

      检查url中的那个参数,如果有,执行jQuery的delay()函数?

      不确定这是否适用于 Rails,因为我主要使用 PHP 和 Drupal。祝你好运!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-10-05
        • 2012-01-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多