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。