2010-12-04 126 views
3

我正在研究一個小書籤,當您點擊它時會建議鏈接。我想象一下,當點擊其中一個鏈接時,當有人點擊後退按鈕時,其意圖是回到小書籤建議的鏈接列表。通過Javascript小書籤保存瀏覽器歷史記錄

但是,我發現沒有辦法使這可能與一個小書籤,它可以運行在任何網頁。當您點擊建議的鏈接然後返回時,原始頁面會顯示出來,沒有任何來自小書籤的JavaScript,通常會在頁面頂部顯示鏈接列表。

當然,用戶可以再次點擊小書籤,但如果不需要,它會很好。有沒有辦法做到這一點,通過我主持的網站(這是一個可怕的解決方案IMO)重定向?

+0

通過網站重定向至少可以很好地工作,因爲該URL將成爲瀏覽器歷史記錄的一部分,易於導航回去。您只需要有人爲您提供一個靜態HTML + Javascript頁面。 – joeytwiddle 2010-12-20 09:25:25

回答

1

不,我不相信有什麼辦法可以做到這一點 - 據我所知不可能在頁面加載時自動觸發bookmarklet javascript - 用戶必須點擊才能執行。

如果您堅持使用此功能,您將需要開發瀏覽器擴展。例如,這將允許您向瀏覽器窗口中添加一個新的持久框架,以便在其中顯示建議的鏈接。 Mozilla/Firefox對devlop非常簡單,因爲它基於JavaScript和XUL(Mozilla的GUI標記語言)。很多教程和文檔在這裏:https://developer.mozilla.org/en/extensions

你也可以爲IE開發擴展,雖然我沒有這方面的經驗。對此問題的回答How do you develop a plugin for IE?可能會幫助您開始使用。

編輯:我想到了一種可能的解決方法:您的書籤可以在當前窗口中創建一個新頁面,並在容器中建立鏈接,並在iframe中呈現原始頁面。點擊任何建議的鏈接將更新iframe。如果沒有真正嘗試它,不確定這會產生什麼樣的實際問題(例如,某些網站 - 比如SO--不會在iframe中呈現,並且一些鏈接將具有target =「_ blank」並在新窗口中打開),或者此格式對你來說是可取的。

+0

解決方法的唯一問題是許多網站運行framebusters。無論如何,它看起來像擴展將是唯一的前進方向,但我支持任何其他可能出現的答案。 – ehsanul 2010-12-11 05:00:16

2

如何將一個html組成一個字符串的小書籤,然後使用window.locationdocument.write()的組合來顯示它?

var links = "<html><head><title>Suggested links</title></head><body>"; 
links += "<p><a href='http://example.com/'>Example Suggested Link</a></p>"; 
links += "</body></html>"; 
window.location = 'javascript:document.write("' + links + '");' ; 

你必須要小心你的報價,以確保正確的字符串被顯示,但快速測試後,它似乎尊重後退按鈕...

下面是一個示例: http://jsbin.com/ebuko4 - 它爲我工作在Firefox,但我還沒有在其他地方測試了它......

代碼:

<html> 
    <head> 
    <title>JS Bin Sample bookmarklet</title> 
    </head> 
    <body> 
    <p><a href='javascript:(function(){ var l = "<html><head><title>Does this bookmarklet work?</title></head><body><p>"+ "<a href=\"http://example.com/\">Suggested link: Example.com</a></p>" + "<p><a href=\"http://example.net/\">Suggested link: Example.net</a></p>" + "</bo" + "dy></html>"; window.location = "javascript:document.write(%27" + l + "%27);"; })()'>Sample Bookmarklet - drag me to your toolbar</a></p> 
    </body> 
</html> 
+0

好主意。你的例子在Chrome中並不適合我,但是如果它適用於其他瀏覽器,它將超出我的預期。 – ehsanul 2010-12-20 23:16:23

0

如果瀏覽器改變頁面,那麼你的書籤會LO控制。所以一個解決方案是不改變頁面。

您可以打開框架或iframe中的建議鏈接。如果您願意,可以使框架填滿窗口,只要有方法可以再次查看建議鏈接列表。

注意這不適用於stackoverflow!他們突破框架grrr。

這是一個有點相關的例子:http://hwi.ath.cx/joeys_bookmarklets.html#splitpreview

0

如果你可以向前攜帶的數據,當用戶遵循建議的環節之一(例如添加#info = ...向鏈接的URL),那麼用戶可以通過再次激活小書籤來恢復鏈接列表,而無需返回瀏覽器。

如果小書籤在工具欄上,那麼這將是一次單擊操作。但是這可能會引發一個新問題:當書籤試圖向您顯示上一頁的結果時,如何獲得最新結果!