【问题标题】:How to change window.location.href in JavaScript and then execute more JS?如何在 JavaScript 中更改 window.location.href 然后执行更多的 JS?
【发布时间】:2011-11-21 09:23:14
【问题描述】:

我有代码片段,点击下面的链接就会执行

cj_redirecturl="/HomeWork/main/load_course";
    utility.xhttprw.data(cj_redirecturl,{data:courseid},function(response){
        if(response){
            window.location.href=base_url+"main";

///next
utility.xhttprw.data(redirecturl,{data:""},function(response){
        if(response){

            id=ent;
            document.getElementById('content').innerHTML=response;
             // Assignemnt module
             //Call function from javascript/assignment.js file to display particular assignment  (ent:means assignment_id) //  
                if(con==5)
                {
                    get_assignment_id(ent);
                }
                if(con==9)
                {
                    get_content_details(ent);
                }


        }   //end of response       
    },false,false,false,'POST','html',true); 
        }
    },false,false,false,'POST','html'); 

在上面的代码中window.location.href=base_url+"main";将页面重定向到其各自的页面,但这会停止执行写在它旁边的代码。现在我希望这段代码在编写时执行,即首先代码应该将我带到相应的“主”页面,然后必须执行之后写入的代码并给我一个所需的输出。

有人可以指导我实现这一目标吗?

【问题讨论】:

  • 这不会像那样工作,当你重定向你得到另一个页面加载时,这意味着你失去了你在 javascript 内存中保存的所有内容。向重定向添加一个参数,通过该参数您可以知道何时重定向并在页面加载时对其进行处理
  • 既然你标记了jquery,我想知道这里的jquery代码是什么
  • 请更改此代码 document.getElementById('content').innerHTML=response;到这个 $('#content').html(response);

标签: javascript jquery window.location


【解决方案1】:

window.location.href = base_url + "main"; ///next定义的代码

你必须添加一些参数:

window.location.href=base_url+"main?parameter=true";

另一种方法是将带有 ajax 的页面加载到 html 中的 div 中。

看看来自 jQuery 的$.ajax()

【讨论】:

  • 你在这里似乎比较明智......我正在尝试你的想法
  • 非常感谢... load the page with ajax into a div in the html
【解决方案2】:

正如已经注意到的那样,您在转到另一个页面后无法执行代码

您可以做的是创建重定向器函数,它将在 cookie 中传递您的函数并重定向,然后在下一页对其进行评估。 (在下一页再次调用该重定向器)

但你应该知道问题的数量

1) 包装。如何打包 cookie 由您决定。

2) 加密。如果您传递未打包或未加密的 cookie,“坏用户”可以在该 cookie 中传递一些恶意软件代码。

3) 你应该有非常非常好的理由去做。 这种方式太复杂,难编码,难维护

如果你做额外的服务器端控制会更好,将它保存在某个地方并在下一页重新加载一个请求。

【讨论】:

    【解决方案3】:

    请试着写

    window.location.href = base_url + "main";
    

    就在 if 条件结束之前或使用

    setTimeout('window.location.href=base_url+"main"', 2000);
    

    【讨论】:

    • 他正在尝试重定向页面,然后进一步处理。如果他以后有重定向问题,他可以将代码向下移动
    【解决方案4】:

    您需要将其余的 JS 代码封装在 window.onbeforeunload 回调中。

    请看这里:Intercept page exit event

    【讨论】:

      【解决方案5】:

      退出页面前需要使用onBlur事件继续执行js代码。

      例子:

      function downloadExcel()
      {
      // Your code...
      
              $('#download_excel_button').hide();
              $('#download_spinner').show();
      
              window.location.href = download_page;
      
              window.onblur = function(event) 
              { 
                  // other event code...
      
                  $('#download_spinner').hide();
                  $('#download_excel_button').show(); 
              }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-11-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-03-10
        相关资源
        最近更新 更多