簡體   English   中英

如何更改URL然后刷新頁面(Safari / Firefox)

[英]How to change the URL then refresh the page (Safari/Firefox)

我有一個用jQuery寫的簡單ajax調用。 它將字符串傳遞給服務器,服務器返回一些json數據。

$.ajax({
        url: ...,
        dataType: 'json',
        success: function(data) {
            for (var d in data) {
                var title = $('<a onClick="location.reload()" href="/player#v='+ data[d].content.id+'" "><p>'+ name +'</p></a>');
            }
        }
    });

我想發生的是,當用戶單擊該鏈接(“標題”)時,頁面將在該新URL上重新加載。 請記住,當前頁面是要重定向到的頁面,但URL中帶有新的哈希(實際上,是使用新內容重新加載頁面上的所有內容)。 這在Chrome中完美運行。 在Safari和Firefox中,無論您單擊列中的哪個鏈接(存在多個具有不同URI的鏈接),它都只會重新加載當前頁面。 如果我取消onClick事件,則URL只會更改,但不會重新加載頁面。

我已經嘗試使用window.location.replace('here new url')將onClick事件更改為自定義函數,但是它什么都不做。 任何幫助表示贊賞。

我可以做兩件事:

不要使用相對網址。 /player#v='+ data[d].content.id+'" "

試試這個代碼:

$.ajax({
  url: ...,
  dataType: 'json',
  success: function(data) {
    for (var d in data) {
      var title = $('<a onClick="javascript: location.href=this.src ;" href="/player#v='+ data[d].content.id+'" "><p>'+ name +'</p></a>');
    }
  }
});

我建議針對該解決方案,而不是將單擊與jquery綁定在一起,而不是將此onClick的函數執行-單擊的處理程序

嘗試了許多解決方案之后,無論是在onClick事件的上下文中,還是直接在ajax調用的HTML中更改,我都發現了一個比jQuery更簡單的解決方案。

在ajax調用之外,我使用了jQuery的內置“ onhashchange”事件:

$(window).on('hashchange', function() {
        location.reload();
});

然后,ajax調用中的html如下所示:

var title = $('<a href="/player#v='+data[d].content.id+'"><p>'+ name +'</p>   </a>');

以前,在問題代碼中,在Chrome中,單擊某個項目后將重新加載頁面,並使用新內容刷新頁面。 但是在Safari和FireFox中,頁面重新加載是在觸發新內容之前進行的,因此要重新加載具有相同內容的頁面。

現在,將強制識別新內容(URL中的哈希),然后才重新加載頁面。 經過測試,可在Chrome,FireFox和Safari中使用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM