當點擊一個鏈接smoothstate加載新頁面的內容時,我想識別具有在新頁面上可見的類的引用頁面。有沒有辦法做到這一點?smoothState.js - 識別引用頁面
1
A
回答
0
這不是最動態的解決方案,但我最終做的是將類設置爲引用頁上的定位標記。 SmoothState具有onBefore()回調函數,它傳遞$ currentTarget,即您單擊的錨點元素來啓動轉換。您可以輕鬆地從錨點元素中讀取href,並檢測您想要以何種方式執行此操作(或將其存儲在某個位置,直到稍後再執行)。
在我的HTML所以,我可以宣佈一個鏈接,像這樣:
<a href="new_page.html" class="special_case">New Page</a>
然後當我設置了smoothState,我宣佈我的onBefore()回調:
onBefore: function($currentTarget, $container) {
if ($currentTarget.is(".special_case")) {
// Some logic here
globalSpecialCase = true;
}
}
由於smoothState實際上讓你保持在同一個地方,只需要一個Ajax調用來請求新的頁面HTML,然後將頁面內容,當前的Javascript環境,全局變量以及所有內容都替換掉。所以我建立了一個全局標誌(或者你可以創建任何你想要的數據結構),並且在特殊鏈接的情況下設置標誌。
在新的頁面加載時,smoothState運行onReady(),它表示已獲取新的頁面內容並準備好替換它並運行介紹動畫。你可以在頁面開始渲染之前檢查你的標誌來做事情,或者你可以等到onAfter()回調發生,這意味着頁面已經完全加載並且所有的轉換動畫已經運行。此時,我檢查標誌,運行一些邏輯並取消設置,以確保我準備好稍後再點擊一個新鏈接。
onReady: {
duration: 0,
render: function($container, $newContent) {
if (globalSpecialCase) {
// Logic because this page was loaded from a special link
globalSpecialCase = false;
}
// Inject the new content
$container.html($newContent);
}
}
有一點需要注意:幾乎所有的smoothState例子有onReady持續時間設置爲0,這意味着onAfter()回調將立即發生以下onReady(),不管你的動畫多久。如果您真的想讓onAfter()等待動畫完成,請確保將動畫持續時間設置爲毫秒。
相關問題
- 1. 使用javascript識別引用頁面
- 2. Smoothstate.js同時顯示新舊頁面
- 3. 在ASP.net中識別頁面
- 4. 如何識別ASP.NET中的引用者頁面?
- 5. 使用PHP來識別當前頁面
- 6. 如何識別用戶登陸另一頁面的頁面?
- 7. asp.net無法識別index.php作爲索引頁面
- 8. 面部識別
- 9. 如何在MediaWiki中識別舊頁面
- 10. 如何使頁面識別node.js代碼
- 11. jwplayer在drupal頁面中未被識別
- 12. 頁面識別延遲UFT 12.5
- 13. IIS無法識別我的頁面
- 14. 帶圖像的頁面導航識別
- 15. setContentView無法識別.xml頁面
- 16. WordPress的 - 識別頁面名稱
- 17. 識別頁面載入中的元素
- 18. jsp頁面不識別java方法
- 19. JSP頁面不識別標籤
- 20. 中的.ascx頁面無法識別ID
- 21. 如何在JQuery Mobile中識別頁面?
- 22. Linux:識別內存中的頁面
- 23. 在Python中識別引用
- 24. 未識別Microsoft.CSharp引用
- 25. 我可以使用命名實體識別來識別Intranet頁面內容嗎?
- 26. 主頁面不能識別內容(子)頁面中的清單
- 27. 如何識別頁面集合中的當前頁面?
- 28. 識別基於Angularjs頁面困境的元素/頁面
- 29. 如何加載程序添加到SmoothState.Js頁面變化
- 30. 如何識別當前頁面索引,同時使用pagecontrol滾動?