2014-09-28 86 views
0

我一直在努力幾個小時,聽起來很簡單。 我有一個複選框列表,如果複選框被選中,頁面URL將會改變(保存一個過濾器選項,所以你可以共享URL到過濾器)。除了一點,當用戶想要回去時,它完美地工作。複選框應該取消選中。基於網頁編輯複選框

使用jQuery

setBoxes()是函數;

我想:

function pageLoad() { 
    setBoxes(); 
} 

而且

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

我也加入

window.onunload = function(){}; 

但是這些解決方案的工作(功能不運行,我檢查) 。

之後,我想我可以做到這一點與PHP(獲取網址到一個數組,如果在數組中回聲檢查),但PHP不會再次運行(我猜它的兌現)。

有沒有我可以嘗試的選擇,因爲我真的不能解決這個簡單的問題。

因爲我的代碼非常大我做了一個很小的例子http://jsfiddle.net/yzoztp05/1/的情況,更新jsfiddle中的url被阻塞,所以它不能完全工作。

爲了使情況更加清晰,我製作了一個視頻https://www.youtube.com/watch?v=jaSc1fmaJD4&feature=youtu.be

代碼設置我的複選框

//convert the url to array 
function getQueryVariable(variable) 
{ 
     var query = window.location.search.substring(1); 
     var vars = query.split("&"); 
     for (var i=0;i<vars.length;i++) { 
       var pair = vars[i].split("="); 
       if(pair[0] == variable){return pair[1];} 
     } 
     return(false); 
} 

// Set the checkboxes to checked if they are in the array 
function setBoxes() 
{ 
    var prijsUrl = getQueryVariable("prijs"); 
    // first set all checkboxes on unchecked 
    $('.prijsFilterBox').prop('checked', false); 
    alert("Loaded"); 
    if(prijsUrl != false) 
    {   
     var res = prijsUrl.split("-"); 

     for(var i = 0; i < res.length; i++) 
     { 
      $('.prijsFilterBox[value='+res[i]+']').prop('checked', true); 
      console.log("prijs = "+res[i]); 
     } 
    } 
    else 
    { 
     console.log("prijs = null"); 
    } 
} 

它的工作原理,如果我刷新頁面,但它不會當用戶按下後退按鈕上運行。如果它不能在頁面上運行JavaScript,我將嘗試使用php創建不同的腳本。

TLDR 如何在頁面後臺(所有瀏覽器)上運行jquery函數?

+0

請添加一些代碼來說明您的問題 – Steve 2014-09-28 19:59:42

+0

即時製作視頻,將很快添加 – 2014-09-28 20:18:36

+1

視頻沒有幫助,'setBoxes()'的代碼在哪裏?它沒有做什麼? – charlietfl 2014-09-28 20:34:34

回答

1

它有可能(我認爲有很多人使用這種方式)擁有timeOut函數,每500ms調用一次,檢查URL是否發生了變化,但不是使用'?'使用散列'#',所以用戶總是在同一頁面上,你可以捕獲URL更改。

如果你需要堅持'?' ,也許你可以用window.onbeforeunload函數做點什麼。

+0

最終使用#散列作品很好謝謝 – 2014-09-30 14:10:56