2011-09-17 70 views
2

我正在嘗試構建一個主要使用html和javascript的web應用程序。我在應用中通過url傳遞了許多不同的變量。將不同的變量傳遞給同一頁

這裏有問題,我有一些鏈接鏈接到應用程序當前正在的頁面,只是改變了變量,但點擊鏈接確實會改變url值,頁面不會改變/重載新的價值,當使用和一個href,有沒有一種乾淨的方式來強制頁面重新加載,如果你鏈接到當前頁面,或更改網址?

目前我正在使用jQuery設置window.location與新變量,然後重新加載頁面。

另外,我有一個類似的問題在瀏覽器上使用後退按鈕。它會更改url但不刷新頁面,因此如果將變量設置爲1,則將其更改爲2,即可以使用,並且頁面將使用變量set o 2重新加載,但如果您返回使用瀏覽器歷史記錄該網址會說你的變量應該是1,但是頁面的其餘部分仍然會像變量2一樣動作,直到你刷新頁面。

有沒有辦法設置一個頁面,以便當您從同一頁面轉到頁面時,它會自動刷新,無論是通過鏈接還是前後瀏覽器歷史記錄?

按請求在這裏是我有問題的代碼的部分的一部分:

第一是代碼的創建html元素爲onload

var sel_tags=document.getElementsByName("selected_tags")[0]; 
var temp=""; 
if(Tags==null) 
{ 
    temp="\<p>All Notes\<\/p>"; 
} 
else//Tags not empty, and there are tag filters 
{ 
    var click= new Array("",a+ AtTagShow); 
    var GoTo="PageViewNotes.html?" 
    for (var i=0; i < Tags.length; i++) { 
     //if we are showing @tags, or a tag is not an @tag 
     if(AtTagShow||Tags[i][0]!="@") 
     { 
      click[0]=t+Tags[i]; 
      if (temp.length>0) 
     {temp+="\<span class=\"spacer\">\/<\/span>"}; 
    temp+="\<a class=\"selected_tags_label\""+ 
      "href=\""+GoTo+click.join("&")+"\">\<span>" 
    +Tags[i]+"\<\/span>\<\/a>" 
    } 
    }; 
}; 
sel_tags.innerHTML=temp; 

這裏是jQuery代碼設置的onclick:

$(".selected_tags_label").live("click",function(){ window.location=(this.href); window.location.reload(); });

此問題的示例網址是: 頁。 ?HTML標籤=#荒謬,#會議& AtTagShow =真 點擊荒謬的元素上的URL將改變爲:? page.html中的標籤=#荒謬& AtTagShow =真

+1

你需要證明你的代碼。 –

+0

對於我所傳遞的變量,他們都在'?'之後符號但變量通常有一張「#」符號或他們一個「@」符號,該應用程序使用用戶定義#tags和@tags進行排序,並組織用戶的數據。這是一家名爲fetchnotes的公司,請訪問fetchnotes.com瞭解更多詳情。 – nadirku

回答

0

看看在jQuery History plug-in爲設置您的網站有後退/前進的歷史記錄。它有助於在頁面上設置狀態,並根據URL字符串中的查詢參數調用數據。

0

在現代瀏覽器(IE8 +,Opera 10.6+,Fx 3.6+,Safari 5+)中,您有hashchange事件。

而是需要刷新頁面,也許你可以實現的東西想要的結果是這樣的:

<script> 
document.onhashchange = function(){ 
    // do something 
} 
</script> 

MDN可能也有幫助。

0

如果您使用查詢參數(URL中的?標記之後的內容),那麼更改查詢參數並將window.location設置爲該新URL應該會導致從服務器加載新的頁面。

如果您使用散列值(#mark int URL後面的內容),則更改散列值不會導致新的頁面加載。

因此,如果您希望每次更改某個值時從服務器重新載入頁面,則應該使用查詢參數。在使用查詢參數時,前進和後退也應該正常工作。

如果你故意試圖做這一切與哈希值,以避免實際的服務器重新加載頁面,那麼你將不得不做更多的編碼攔截哈希值發生變化,並進行處理。在現代瀏覽器中,使用window.onhashchange事件比使用舊版瀏覽器更容易。有關更多信息,請參閱this page on MDN

0

瀏覽器重新加載頁面,只要這些parts of the URL都是通過window.location更新:

  1. 端口
  2. 路徑
  3. 查詢字符串

,但它不會加載當前文檔,如果更改fragment_id部分(這簡直就是ar參考當前文檔中的HTML元素)。

因此,從你說的話,我想你是更新fragment id

此外這也許有助於知道window.location.reload()方法的工作F5鍵。

1
window.location.href="page.html?Tags=#rediculous&AtTagShow=true" 
相關問題