MozTW 討論區 https://forum.moztw.org/ |
|
有沒有人可以幫我改一改這一段程式碼呢? https://forum.moztw.org/viewtopic.php?f=18&t=13453 |
第 1 頁 (共 2 頁) |
發表人: | mercichao [ 2006-03-30, 21:48 ] | ||
文章主題 : | 有沒有人可以幫我改一改這一段程式碼呢? | ||
這是一個叫 "Reload" 的套件的程式碼, 這個套件自己弄了一個按鈕, 在按鈕上按右鍵可以重新載入所有分頁, 但是同時又會出現了選單 (平時在工具列上按右鍵時出現的選單) 可不可以幫我改成在按鍵上按右鍵, 但不會出現選單的呢? 因為沒有作者的電郵地址, 也沒有首頁, 找不到作者... 有沒有人可以幫幫我呢..? ![]() 代碼: function reload(shift, ctrl, alt, button){
var nsIWebNavigation = Components.interfaces.nsIWebNavigation; //ctrl and alt passed for completeness and to make any subsequent upgrades easier if(shift){ //Reload pages from server switch(button){ case 0: //Left Button - Reload page BrowserReloadSkipCache(); break; case 1: //Middle Button - Load page in new tab var url = window._content.document.location.href; var tab = gBrowser.addTab("about:blank"); gBrowser.selectedTab = tab; gBrowser.loadURIWithFlags(url, nsIWebNavigation.LOAD_FLAGS_BYPASS_PROXY | nsIWebNavigation.LOAD_FLAGS_BYPASS_CACHE, null, null); break; case 2: //Right Button - Reload all tabs var l = gBrowser.mPanelContainer.childNodes.length; for(var i = 0; i < l; i++) { var b = gBrowser.getBrowserAtIndex(i); try { b.reloadWithFlags(nsIWebNavigation.LOAD_FLAGS_BYPASS_PROXY | nsIWebNavigation.LOAD_FLAGS_BYPASS_CACHE); } catch(e) {} } break; default: BrowserReloadSkipCache(); break; } }else{ //Reload pages from cache switch(button){ case 0: //Left Button - Reload page BrowserReload(); break; case 1: //Middle Button - Load page in new tab var tab = gBrowser.addTab(window._content.document.location.href); gBrowser.selectedTab = tab; break; case 2: //Right Button - Reload all tabs gBrowser.reloadAllTabs(); break; default: BrowserReload(); break; } } }
|
發表人: | Amauds [ 2006-03-30, 22:31 ] |
文章主題 : | |
也許該查查 event.preventBubble(); 的用法 |
發表人: | mercichao [ 2006-03-31, 17:53 ] |
文章主題 : | |
我知道用 preventDefault(), 但就是不會用才找人幫忙吧... ![]() 我沒有學過 javascript... |
發表人: | Amauds [ 2006-03-31, 21:11 ] |
文章主題 : | |
mercichao 寫: 我知道用 preventDefault(), 但就是不會用才找人幫忙吧...
![]() 我沒有學過 javascript... 我的意思是有關介面佈建的 XUL 檔, 這個套件一定有某個檔其包含著按鈕的各項細節(外型、位置、啟動機制等...) 它可能是 javascript 檔,也可能是 XUL 檔, 當按鈕放置於工具列之上時,觸發事件不只是傳遞給按鈕,也會傳給工具列, 若是沒有通知系統已將事件處理完畢,則該事件將持續發生直到某個元件通知系統事件結束。 根據你的描述,按鈕被以右鍵觸發後,而工具列的選單也會被觸發, 知道其中的關聯性了嗎? |
發表人: | mercichao [ 2006-03-31, 21:27 ] |
文章主題 : | |
Amauds 寫: 我的意思是有關介面佈建的 XUL 檔,
這個套件一定有某個檔其包含著按鈕的各項細節(外型、位置、啟動機制等...) 它可能是 javascript 檔,也可能是 XUL 檔, 當按鈕放置於工具列之上時,觸發事件不只是傳遞給按鈕,也會傳給工具列, 若是沒有通知系統已將事件處理完畢,則該事件將持續發生直到某個元件通知系統事件結束。 根據你的描述,按鈕被以右鍵觸發後,而工具列的選單也會被觸發, 知道其中的關聯性了嗎? 這個我也當然知道啦...=.=" 我當然明白它的原理, 也知道我大概要做些甚麼, 就是不知要把程式碼修改成怎麼樣子嘛... 我的意思是, 我沒學過 javascript, 不會用語法加入這一個小小的功能, 有哪一位大大肯抽少少時間可以幫我適當地加這麼一小小的一句 preventDefault() 上去... ![]() |
發表人: | Amauds [ 2006-03-31, 21:39 ] |
文章主題 : | |
mercichao 寫: 我的意思是, 我沒學過 javascript, 不會用語法加入這一個小小的功能, 有哪一位大大肯抽少少時間可以幫我適當地加這麼一小小的一句 preventDefault() 上去...
![]() 這個套件只有這麼一個 代碼: function reload(shift, ctrl, alt, button){ ... } 函數而已嗎?
|
發表人: | mercichao [ 2006-03-31, 21:49 ] |
文章主題 : | |
引言回覆: 這個套件只有這麼一個 代碼: function reload(shift, ctrl, alt, button){ ... } 函數而已嗎?是的, 那些程式碼屬於一個叫 reload.js 的檔案 (裏面的程式碼只有上述這麼多), 有另一個檔案呼叫它的: reloadOverlay.xul 代碼: <?xml version="1.0"?>
<overlay id="reloadOverlay" xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> <script type="application/x-javascript" src="chrome://reload/content/reload.js" /> <toolbox id="navigator-toolbox"> <toolbar id="nav-bar"> <toolbarbutton onclick="reload(event.shiftKey, event.ctrlKey, event.altKey, event.button);" id="reload-button" class="toolbarbutton-1 chromeclass-toolbar-additional" label="Reload" tooltiptext="Reload current page" context=""/> </toolbar> </toolbox> </overlay> 套件的網址: https://addons.mozilla.org/extensions/m ... 10&id=1410 |
發表人: | yuoo2k [ 2006-03-31, 22:26 ] |
文章主題 : | |
試試 XUL 裡頭把 event.preventBubble(); 附加在 onClick 事件的 reload(...); 處理後... 像這樣... onclick="reload(event.shiftKey, event.ctrlKey, event.altKey, event.button); event.preventBubble();" |
發表人: | mercichao [ 2006-04-01, 08:36 ] |
文章主題 : | |
行了耶~! ![]() 謝謝您喔~~ ![]() |
發表人: | mercichao [ 2006-04-01, 17:44 ] |
文章主題 : | |
我還有一個問題要麻煩大大幫忙的.. ![]() 有甚麼辦法才能令上述程式碼中, reload(...) 這個函數每當分頁數是 1 , currentPage 是 about:blank 的時候就不生效:?: (小弟還差這一步就能把這個套件變完美了 ![]() |
發表人: | yuoo2k [ 2006-04-01, 20:13 ] |
文章主題 : | |
試試在 reload() 函式的一開頭加入... 代碼: if (gBrowser.currentURI.spec == "about:blank") return;
|
發表人: | mercichao [ 2006-04-01, 21:53 ] |
文章主題 : | |
嗯~ 這個行得通, 那這樣呢~? 引言回覆: if (分頁數目 == 1 而且 gBrowser.currentURI.spec == "about:blank") return;
又應該怎麼寫 ? ![]() |
發表人: | kourge [ 2006-04-01, 23:11 ] |
文章主題 : | |
if (分頁數目 == 1 && gBrowser.currentURI.spec == "about:blank") return; 分頁數目我不知道要怎麼寫orz |
發表人: | yuoo2k [ 2006-04-02, 00:52 ] |
文章主題 : | |
要抓 Tabs,我 IE Tab 裡是這樣子列舉出來的: 代碼: var mTabs = gBrowser.mTabContainer.childNodes;
for(var i = 0 ; i < mTabs.length ; i++) { // 巡覽每個 mTabContainer 的 childNodes if (mTabs[i].localName == "tab") { // 如果 mTabs[i] 為 Tab 時,做XXX... ............ } } 不知有沒有更簡單能取 Tabs 數目的方法...@@ |
發表人: | mercichao [ 2006-04-02, 09:37 ] |
文章主題 : | |
我把其中一段程式碼: 引言回覆: if (e.attrName == 'disabled') { stopButton.setAttribute('disabled', 'false'); } 改成為這樣: 引言回覆: var mTabs = gBrowser.mTabContainer.childNodes;
for(var i = 0 ; i < mTabs.length ; i++) { if (e.attrName == 'disabled' && mTabs[i].localName == "tab") { stopButton.setAttribute('disabled', 'false'); } } 但無論分頁數目是否 1, stopButton.setAttribute() 還是會執行 (測試過跟 e.attrName == 'disabled' 這個判斷條件無關) 是否我有甚麼地方會錯意呢? |
第 1 頁 (共 2 頁) | 所有顯示的時間為 UTC + 8 小時 |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |