在卸载当前页面时将字符串与单击的URL匹配

时间:2015-08-19 10:02:23

标签: javascript php jquery

我有一个带有网址的表单:

localhost:83/mysite/item/UpdateItems/225

我有一个临时表,我在其中加载数据并在临时表格中以我的形式显示。

当我刷新页面时,我不想触发ajax调用并截断表格。但是,如果我从菜单中单击另一个链接,那么我确实要激活ajax调用并截断表。

有可能吗?

单击另一个菜单时,我使用beforeunload作为截断表:

 $(window).on('beforeunload', function(){
     //My ajax code for truncate table
});

但这也适用于页面刷新,我不想要。所以我尝试在URL中匹配字符串:

$(window).on('beforeunload', function(e){
    if (document.URL.indexOf("UpdateItems") > -1) {

        console.log("page refresh");

     }else{
         console.log("not refreshed");  
      }
});

但即使我点击了另一个菜单,这总是会进入首页刷新状态。

2 个答案:

答案 0 :(得分:0)

试试这个,一定会有用,

    <SCRIPT language="javascript">

    window.onbeforeunload=before;

    function before(evt)
    {
       if(window.location.toString().indexOf("UpdateItems") > -1) { 

        console.log("page refresh");

       }
       else{
         console.log('Not');
       }
    }
    </script>

答案 1 :(得分:0)

如果(并且这是一个非常大的问题)通过单击页面上的链接(而不是从脚本或用户点击浏览器刷新按钮)来完成刷新,这种方法可能有效:

如果有人单击不应导致表被截断的链接,则将标志设置为false,并且只有在标志为true时才运行代码:

// As default the flag is true.
flagTruncate = true;

// When someone clicks a link with UpdateItems in the URL, the flag is  set to false.
$("a[href*='UpdateItems']").click(function () {
    flagTruncate = false;
});

//Only truncate the table when the user is leaving if the flag is still true.
$(window).on('beforeunload', function() {
    if(flagTruncate) {
        //Truncate the table.
    }
});