【问题标题】:jQuery code not called after window.location.replace( url )在 window.location.replace( url ) 之后没有调用 jQuery 代码
【发布时间】:2011-10-18 02:54:40
【问题描述】:

我有一个代码,在单击链接 ('#versionPageFromProdLink') 后,会将页面重定向到索引页面。索引页面包含该内容。我想在页面重定向后隐藏它并显示我拥有的下一个 div ()。

页面被重定向,但是在 window.location.replace( url ); 之后的 jQuery 函数;行没有被调用。

页面重定向后如何重定向和调用 jQuery?

代码:

 jQuery( '#versionPageFrmProdLink').click( function(){
    window.location.replace( url  );

    // jQuery code below is not called, <div id="versionMainContent"> is not hidden 
  jQuery(".versionMainContent").hide("fast", function(){
    jQuery( ".versionProductContent" ).show();
  });   

 });

【问题讨论】:

    标签: javascript jquery


    【解决方案1】:

    如上所述,location.replace 表示代码“之后”不会执行。您需要做的是附加一个哈希“index.html#divCode”或类似的(在这种情况下您也可以使用查询字符串),然后检测 onload / on document-ready for the index page,然后更新那里的隐藏/显示状态。

    【讨论】:

    • 在索引页面上,使用 if(window.location.href.indexOf("#divCode") != -1) {... (在本例中)作为运行交换的条件代码
    【解决方案2】:

    这基本上是不可能的。

    一旦您导航到不同的页面,之前的页面(包括其所有 Javascript)都将消失。

    【讨论】:

      【解决方案3】:

      您必须在重定向到的页面中处理重定向后的二次执行。

      例子:

      第 1 页

      jQuery( '#versionPageFrmProdLink').click( function(){ 
        window.location.replace( url  ); 
      }
      

      请注意,在重定向期间,您可以在 URL 中传递查询字符串以检查下一页中的条件。

      第 2 页

      现在您已重定向到下一页。您可以放置​​一个 document.ready 函数并运行所需的内容。

      $(document).ready(function () {
          jQuery(".versionMainContent").hide("fast", function(){ 
          jQuery( ".versionProductContent" ).show(); 
      
      });
      

      【讨论】:

        【解决方案4】:

        您的设计是问题所在。重定向会停止执行流程。您可以使用 ajax 进行服务器调用并继续执行。

        或者,如果您愿意,可以执行重定向并传递 URL 参数(如 ?hideVersionMainContent=true)并执行隐藏服务器端。

        还有其他方法可以完成这项任务,但这应该会给你一些想法。

        【讨论】:

          【解决方案5】:

          location.replace 之后的代码在您离开的页面上运行(如果它曾经运行过;更改 location 会离开页面并很可能会终止您的代码就在那里)。

          您需要将要显示的信息传递到新页面,并让页面上的代码填写统计信息。有很多方法可以做到这一点:

          • 关于查询字符串
          • 通过web storagesessionStorage 可能有意义)
          • Cookie(但不要,这不是它们的用途)

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2018-11-10
            • 1970-01-01
            • 1970-01-01
            • 2019-01-12
            • 2019-12-03
            • 2011-12-23
            • 1970-01-01
            相关资源
            最近更新 更多