MozTW 討論區 https://forum.moztw.org/ |
|
Firegesture的開新分頁無法被Tab kit分類(已解決) https://forum.moztw.org/viewtopic.php?f=11&t=30793 |
第 1 頁 (共 1 頁) |
發表人: | clspeter [ 2010-08-05, 18:06 ] |
文章主題 : | Firegesture的開新分頁無法被Tab kit分類(已解決) |
用firegesture開啟的新分頁都沒辦法被tab kit分類 問題應該是卡在firegesture是直接開一個新的空分頁再輸入網址 而不是用現有的分頁去開新分頁 才會有這個問題 我有在網路上找了腳本 但是沒辦法開新分頁 不知道還有沒有什麼解決方法 PS:我用的是搖擺手勢 代碼: // Open Link in New Tab [Alternative] (Tab in Background)
// Opens a new tab by faking a click on the link. const IN_FOREGROUND = false; // Check if it's a link the gesture started from, if yes open link in new tab if (FireGestures.getLinkURL(FireGestures.sourceNode)) { // Create a click event var event = document.createEvent("MouseEvents"); event.initMouseEvent("click", true, true, window, 0, 0, 0, 0, 0, // Control key - true to open new tab, // else current tab is used true, // Alt key - unnecessary for this script false, // Shift key - true to open in new window, // or if ctrl is pressed open the tab in // foreground, else opened in background IN_FOREGROUND, false, 0, null); // Dispatch the event for the "clicked" link FireGestures.sourceNode.dispatchEvent(event); } |
發表人: | ettoolong [ 2010-08-06, 11:34 ] |
文章主題 : | Re: Firegesture的開新分頁對Tab kit分類無效 |
clspeter 寫: 用firegesture開啟的新分頁都沒辦法被tab kit分類 問題應該是卡在firegesture是直接開一個新的空分頁再輸入網址 而不是用現有的分頁去開新分頁 才會有這個問題 我有在網路上找了腳本 但是沒辦法開新分頁 不知道還有沒有什麼解決方法 PS:我用的是搖擺手勢 簡單看了一下 firefox 和 FireGestures 的 source. 在 firefox 裡面 chrome\browser\content\browser\nsContextMenu.js 右鍵選單裡面新分頁開啟是用到下面這一段:(開啟後可以被tab kit 作 grouping) 代碼: // Open linked-to URL in a new tab. openLinkInTab: function() { openNewTabWith(this.linkURL, this.target.ownerDocument, null, null, false); }, 在 firefox 裡面 chrome\browser\content\browser\utilityOverlay.js 上面的code接到的是下面這一段: 代碼: function openNewTabWith(aURL, aDocument, aPostData, aEvent, aAllowThirdPartyFixup, aReferrer) { if (aDocument) urlSecurityCheck(aURL, aDocument.nodePrincipal); var prefSvc = Components.classes["@mozilla.org/preferences-service;1"] .getService(Components.interfaces.nsIPrefService); prefSvc = prefSvc.getBranch(null); // should we open it in a new tab? var loadInBackground = true; try { loadInBackground = prefSvc.getBoolPref("browser.tabs.loadInBackground"); } catch(ex) { } if (aEvent && aEvent.shiftKey) loadInBackground = !loadInBackground; // As in openNewWindowWith(), we want to pass the charset of the // current document over to a new tab. var wintype = document.documentElement.getAttribute("windowtype"); var originCharset; if (wintype == "navigator:browser") originCharset = window.content.document.characterSet; // open link in new tab var referrerURI = aDocument ? aDocument.documentURIObject : aReferrer; var browser = top.document.getElementById("content"); return browser.loadOneTab(aURL, { referrerURI: referrerURI, charset: originCharset, postData: aPostData, inBackground: loadInBackground, allowThirdPartyFixup: aAllowThirdPartyFixup}); } 然後 FireGestures 裡面的 browser.js FireGestures開新分頁是用下面這一段:(開啟後不會被tab kit 作 grouping) 代碼: _performAction: function(event, aCommand) { ... ... case "FireGestures:OpenLinkInBgTab": case "FireGestures:OpenLinkInFgTab": var linkURL = this.getLinkURL(); if (!linkURL) throw this._getLocaleString("ERROR_NOT_ON_LINK"); var doc = this.sourceNode.ownerDocument; this.checkURL(linkURL, doc); var charset = window.content.document.characterSet; var referer = makeURI(doc.location.href); var background = aCommand == "FireGestures:OpenLinkInBgTab"; gBrowser.loadOneTab(linkURL, referer, charset, null, background, false); break; ... ... }, 看來呼叫的東西是一樣的(gBrowser.loadOneTab); 有試改成 var referer = doc.documentURIObject; 沒用, 不太清楚 tab kit裡面用來group的依據是啥. 應該說真的有其他套件在開分頁的動作上能跟tab kit互動(被tab kit作group分類)的嗎? 有的話也許可以從code裡面找出正確的寫法。 另,在 tab kit 的 tabkit.js 裡面有一段: 代碼: this.preInitSortingAndGroupingMethodHooks = function preInitSortingAndGroupingMethodHooks(event) { ... ... } 感覺上只有透過這裡面寫的幾個動作(ex: nsContextMenu.prototype.openLinkInTab、nsContextMenu.prototype.openFrameInTab 等) 能被用Opener(開啟者) 的方式 grouping。 |
發表人: | alex301 [ 2010-08-06, 13:38 ] |
文章主題 : | Re: Firegesture的開新分頁對Tab kit分類無效 |
因為 FireGesture 是用開啟新分頁來載入URL,所以將下列這個 TabKit 選項勾起來即可。 TabKit 選項 -> Advanced (進階) -> When grouping tabs by opener (當群組分頁由開啟者開啟時...) -> Treat blank new tabs as related to the current tab (將新開的空白分頁視為關連到當前的分頁) 勾起來。 |
發表人: | ettoolong [ 2010-08-06, 16:40 ] |
文章主題 : | Re: Firegesture的開新分頁對Tab kit分類無效 |
到 FireGestures 裡面加入自己的腳本,試過是可以用。 代碼: try{tabkit.addingTab("related");}catch (ex) {} var srcNode = FireGestures.sourceNode; var linkURL = FireGestures.getLinkURL(srcNode); if (!linkURL) throw FireGestures._getLocaleString("ERROR_NOT_ON_LINK"); var doc = srcNode.ownerDocument; var charset = window.content.document.characterSet; var referer = makeURI(doc.location.href); var background = true; //在背景開啟 gBrowser.loadOneTab(linkURL, referer, charset, null, background, false); try{tabkit.addingTabOver();}catch (ex) {} 我是替代掉[用新分頁開啟鏈結(背景分頁)]這一個 修一下,從FireGestures裡面copy出來後漏改的地方。 throw FireGestures._getLocaleString("ERROR_NOT_ON_LINK"); |
發表人: | clspeter [ 2010-08-06, 16:53 ] |
文章主題 : | Re: Firegesture的開新分頁對Tab kit分類無效 |
謝謝大家的回答 原來tab kit裡面就有選項可以用了 不過當初看到"當群組分頁由開啟者開啟時..." 真的會完全不了解他的意思 但是會造成搜尋也是會編在同一組 樓上的腳本確定可以使用 感謝大家 |
發表人: | ettoolong [ 2010-08-06, 19:07 ] |
文章主題 : | Re: Firegesture的開新分頁無法被Tab kit分類(已解決) |
補一個比較正確的腳本寫法: 代碼: try{tabkit.addingTab("related");}catch (ex) {} FireGestures._performAction(event, "FireGestures:OpenLinkInFgTab"); try{tabkit.addingTabOver();}catch (ex) {} 直接轉呼叫FireGestures內寫好的腳本。 先用 tabkit.addingTab("related"); 這行告訴 tab kit接下來要開的分頁要和這一頁作群組, 再來中間插你開分頁的code, 最後用tabkit.addingTabOver();把群組動作結束。 至於 "FireGestures:OpenLinkInFgTab" 這個字串可以在 FireGestures 套件的 firegestures\browser.rdf 裡面找到,修改字串就可以轉呼叫所有 FireGestures 內建的對應腳本。 |
第 1 頁 (共 1 頁) | 所有顯示的時間為 UTC + 8 小時 |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |