新增了一個 Blogger Hack Tip 專題,將我修改的心得以及大家問的問題,做一個整理及備忘。
也希望大家不吝指教,一起切磋。
How to hacking Blogger index.html:
我要如何在新版本 (Blogger beta) 首頁(index.html) hack 功能? 為什麼我寫的 javascript 運作正常,但按了最下方的"較新的文章" "較舊的文章" 後便沒有作用了?
##CONTINUE##
Tip #1:
這個 Tip 就是阿土伯用在處理繼續閱讀的方式。
由於新版本(Blogger beta)增加了 "較新的文章" "較舊的文章" 功能,然而它是利用 XHR 的方式運作,所以頁面並未 Reload。對於大部份 hack 的 javascript 來說,它是運作於 document.onload 或 dom ready 時機,所以無法於換頁後運作。
所以我們必需觀察 Blogger 它的 XHR Response handle ,然後進行 Hooking 。這個方式可以用在任何 ajax 程式中加掛您想擴充的功能。
以 Blogger beta 來說,它的 Response handle 是 _WidgetManager._HandleControllerResult ,所以我們就對它下手嘍。
原程式流程:
新程式流程:
以 Javascript 來實作,最容易的方式就是以新的 MyFunction 取代 _WidgetManager._HandleControllerResult ,然後在 MyFunction 中利用 Function.apply 呼叫原 _WidgetManager._HandleControllerResult 即可完成。
附上繼續閱讀功能的 Hooking Source Code:
Technorati Tags: Javascript, Blogger, Programming
也希望大家不吝指教,一起切磋。
How to hacking Blogger index.html:
我要如何在新版本 (Blogger beta) 首頁(index.html) hack 功能? 為什麼我寫的 javascript 運作正常,但按了最下方的"較新的文章" "較舊的文章" 後便沒有作用了?
##CONTINUE##
Tip #1:
這個 Tip 就是阿土伯用在處理繼續閱讀的方式。
由於新版本(Blogger beta)增加了 "較新的文章" "較舊的文章" 功能,然而它是利用 XHR 的方式運作,所以頁面並未 Reload。對於大部份 hack 的 javascript 來說,它是運作於 document.onload 或 dom ready 時機,所以無法於換頁後運作。
所以我們必需觀察 Blogger 它的 XHR Response handle ,然後進行 Hooking 。這個方式可以用在任何 ajax 程式中加掛您想擴充的功能。
以 Blogger beta 來說,它的 Response handle 是 _WidgetManager._HandleControllerResult ,所以我們就對它下手嘍。
原程式流程:
XHR Request - XHR Response - _WidgetManager._HandleControllerResult
新程式流程:
XHR Request - XHR Response - MyFunction - _WidgetManager._HandleControllerResult
以 Javascript 來實作,最容易的方式就是以新的 MyFunction 取代 _WidgetManager._HandleControllerResult ,然後在 MyFunction 中利用 Function.apply 呼叫原 _WidgetManager._HandleControllerResult 即可完成。
附上繼續閱讀功能的 Hooking Source Code:
// Try hook Blogger _WidgetManager_HandleControllerResult
if(BloggerExt.isListMode() (typeof BloggerExt._WidgetManager_HandleControllerResult == 'undefined') ) {
BloggerExt._WidgetManager_HandleControllerResult = _WidgetManager._HandleControllerResult;
_WidgetManager._HandleControllerResult = function() {
try {
// Call _WidgetManager_HandleControllerResult
BloggerExt._WidgetManager_HandleControllerResult.apply(this, arguments);
// replace_continue_markup
BloggerExt.replace_continue_markup();
}catch(e) {
}
}
}
Technorati Tags: Javascript, Blogger, Programming
1 則留言:
嗯? 請問一下要怎麼看出現在blogger 的版本? 我套用了您修改後的js檔. 找來找去還是找不到read more在那裏. 可否請您幫我看一下. 底下是我的blog
http://idarfan.blogspot.com/
張貼留言