有沒有方法,JavaScript腳本或任何可以允許預加載頁面中的超鏈接?例如,我希望當用戶來到http://ahostel.lt/並且頁面完全加載時,腳本將開始在導航中預加載其他頁面(預訂,地圖,設施,環視,[...])。所以當用戶點擊任何超鏈接時,頁面會立即加載。如何做到這一點?preload =「true」超鏈接
回答
雖然目前只有Firefox支持,但HTML5規範中實際上已經規定了這一點。
<link rel="next" href="page2.html">
只是把它作爲一個非JavaScript的替代品扔給你。
我想你還需要指明預取屬性http://browserspy.dk/prefetch.php。 – Gajus 2010-07-19 22:57:10
你可以做這樣的事情:
$(function() {
$('a').each(function() {
new Image().src = $(this).attr('href'); // or just this.href
});
});
他們不是圖像,但瀏覽器並不知道。您可能要慢下來一點,以免嗆連接太多:
$(function() {
var urls = $('a').map(function(_, a) { return a.href; }).get(0);
var i = 0;
function fetchOne() {
if (i === urls.length) return;
var img = new Image();
img.load = fetchOne;
img.src = urls[i++];
};
fetchOne();
});
編輯 — @Adam使有關「危險」的鏈接來獲取一個很好的點。將某些鏈接標記爲「noPrefetch」(作爲類或某物)可能會更好,或者也可以只將預取鏈接標記爲「prefetch」類。
還沒有嘗試過,但基於this blog post,你可以做到以下幾點:
$("a").each(function(){
$.ajax({ url:$(this).attr("href"), cache:true, dataType:"text" });
});
你應該小心但如果你有一個像註銷用戶可以得到註銷鏈接。 See Wikipedia for more problems with prefetching。
將此與離線存儲概念相結合,您就有贏家。您可以預取所有主要導航頁面,並且這些頁面的每個着陸頁都可以預取下一個導航頁面等,並放置在離線存儲中(window.localStorage或window.sessionStorage)。對於JSON等來說會很好。你可以比緩存更好地控制需要過期或不需要的時間,因爲你的密鑰可能包含時間戳指示符。可能更適合於不需要每次加載產品目錄的電子商務網站。例如,您可以將JSON放入其中,並立即恢復原狀。
我不確定離線存儲是否良好,或者不考慮緩存。思考?
- 1. asp:超鏈接顯示無超鏈接
- 2. Preload Scenekit場景
- 3. 與超鏈接
- 4. GWT:超鏈接
- 5. D3plus超鏈接
- 6. 從超鏈接
- 7. easeljs超鏈接
- 8. XLConnect超鏈接
- 9. 超鏈接
- 10. System.out超鏈接?
- 11. Excel超鏈接
- 12. 超鏈接
- 13. 超鏈接
- 14. 超鏈接truncatechars
- 15. 的超鏈接
- 16. jquery:div超鏈接
- 17. 超級鏈接
- 18. iPhone超鏈接
- 19. RichTextBox超鏈接
- 20. 超鏈接
- 21. JavaScript - Preload圖像
- 22. jQuery的超鏈接
- 23. 製作超鏈接
- 24. VBA宏 - 超鏈接
- 25. AS2 textField超鏈接
- 26. 拖延超鏈接
- 27. 汽車超鏈接
- 28. ListBoxItem和超鏈接
- 29. 從超級鏈接
- 30. 修復超鏈接
頁面是否在同一個域上? – 2010-07-19 22:01:44
是的。假設我們正在談論http://ahostel.lt – Gajus 2010-07-19 22:03:26
[預加載HTML網頁或非Flash網絡應用程序?](http://stackoverflow.com/questions/3275056/preloading-of-html-web -page-or-flash-web-applications) – Wrikken 2010-07-19 22:07:46