How to change window.location.href in JavaScript and then execute more JS?

人盡茶涼 提交于 2019-12-08 20:37:56

问题


I have code snippent which is executed on click of a link which is as below

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'); 

in above code window.location.href=base_url+"main";redirects the page to its respective page but this stops the execution of the code written just next to it. Now I want this code to be executed as it is been written i.e. firstly the code should take me to the respective "main" page and then code writte after that must execute and give me a required output.

Can someone guide me to achieve this?


回答1:


window.location.href = base_url + "main"; <- when you load this page, call your code defined at ///next

you will have to add some parameters:

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

The other way would be to load the page with ajax into a div in the html.

Have a look at $.ajax() from jQuery.




回答2:


As already been noticed, you cant execute code after you went to another page

What you can do is to create redirector function, that will pass your function in cookie and ,redirect and then eval it on next page. (with another call to that redirector on next page)

But you should be aware of number of issues

1) Packing. It is upon you to decide how you pack cookie.

2) Encription. If you pass non-packed OR non-encrypted cookie the "bad user" can pass some malware code inside that cookie.

3) You should have VERY, VERY good reasons to do it. This way is too complicated, hard to code, hard to maintain

Much better if you do additional server-side controls, save it somewhere and reload on next page with one more request.




回答3:


please try to write

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

just before the end of if condition or use

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



回答4:


You'll need to wrap the rest of the JS code inside a window.onbeforeunload callback.

See here: Intercept page exit event




回答5:


You need to use the onBlur event to continue to execute js code before exit from the page.

Example:

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(); 
        }
}


来源:https://stackoverflow.com/questions/8209626/how-to-change-window-location-href-in-javascript-and-then-execute-more-js

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!