2013-03-14 111 views
0

我知道如何將HTML寫入到window.open()的新窗口,但這會導致新的窗口。需要一種方法來做window.location.href(dynamicHTMLstring)

我想我的HTML輸出字符串被寫入當前窗口。效果就像點擊一個鏈接。目的是確保我有瀏覽器歷史記錄。

當我參考使用window.location.href()的URL時,我無法寫入內容,因爲href屬性必須是URL。

有沒有辦法將兩者結合起來,並獲得一個新的頁面加載到瀏覽器歷史記錄中,使用字符串值而不是文件?不允許服務器端參與。

+1

你想要一個新的窗口,添加到瀏覽器的歷史?所以當他們點擊後退按鈕時,這個新窗口會去哪裏? – 2013-03-14 01:49:02

+0

更簡單的使用腳本修改當前頁面中的視圖並使用散列來路由視圖 – charlietfl 2013-03-14 01:56:18

+0

我仍然不確定你在找什麼。使用'window.open()'在新窗口中加載頁面alredy在用戶瀏覽歷史中包含頁面。如果您只是想要替換頁面上的內容,那麼您可以使用javascript替換文檔元素的內容,然後使用我在答案中提到的History API向瀏覽器歷史記錄中添加條目,以使其顯示用戶已訪問過不同的頁面。 – BinaryTox1n 2013-03-14 19:08:03

回答

2

HTML5帶來了JavaScript的新歷史API。這使您可以使用JS將事物推送到瀏覽器歷史記錄。有了這個,你可能能夠完成你正在尋找的東西。如果這沒有什麼幫助,請澄清你的問題,因爲有點難以分辨你的要求。

編輯:
我認爲這是你在找什麼。看看this example。當您點擊諸如「蓬鬆」之類的鏈接時,該網站實際上只是替換了網站正文的文本,並向瀏覽器的歷史記錄添加了一個條目,以顯示用戶實際上轉到了其他頁面。實際上,瀏覽器從來沒有提出過另一個請求,也沒有打開另一個頁面,並且這只是一種JavaScript技巧。

釋演示環節,我送你,有很多的好消息:
http://html5doctor.com/history-api/

中的jsfiddle演示:

我做什麼,我講的小規模示威here in a jsFiddle。 如果你看,你會看到一個鏈接。如果要右鍵單擊並查看包含內容的小方塊的來源,則會看到您正在查看頁面的來源「http://jsfiddle.net/ByZpW/4/」。

點擊鏈接。

現在您將在鏈接中看到新內容和新文本。如果您要再次查看該小方塊的來源,則會看到您正在查看頁面的來源「http://fiddle.jshell.net/lolnewpageonjsfiddledomain/」。

很明顯,jsFiddle沒有讓我給他們的域添加一個新頁面,那麼發生了什麼?我告訴JavaScript,我去了別的地方,它相信我。現在,如果你點擊內容廣場並點擊退格,你會看到你被帶回「第一頁」。如果您查看來源,則會確認您已返回原始位置。當然這是一個很大的謊言。我們沒有去任何地方,一切都是用JavaScript來看待的。

,請注意行:

// History magic here 
history.pushState({link: link, content: content}, "test", $(this).attr("href")); 

這就是我們用JS說:「假裝我去別的地方,儘管我還在這裏。」

+0

謝謝 - 我在編輯我的問題。 – tim 2013-03-14 18:56:04

+1

@tim我更新了我的答案,以更清楚地解釋我認爲你在找什麼。 – BinaryTox1n 2013-03-14 19:14:03

+1

@tim我添加了另一個互動示例來向你展示我的意思。 – BinaryTox1n 2013-03-14 19:48:47

相關問題