Страницы: 1
Tab History
Код любезно выдран Infocatcher'ом из дополнения ithinc'a "Tab Utilities".
Описание: все вкладки будут наследовать историю родительских вкладок (если они есть).
Заменяет дополнения: Tab History, Tab History Redux.
var TU_hookCode = TU_hookMethod; function TU_hookMethod(aStr) { try { var namespaces = aStr.split("."); try { var object = this; while (namespaces.length > 1) { object = object[namespaces.shift()]; } } catch (e) { throw TypeError(aStr + " is not a function"); } var method = namespaces.pop(); if (typeof object[method] != "function") throw TypeError(aStr + " is not a function"); return object[method] = TU_hookFunc.apply(this, Array.concat(object[method], Array.slice(arguments, 1))); } catch (e) { Components.utils.reportError("Failed to hook " + aStr + ": " + e.message); } } function TU_hookFunc(aFunc) { var myCode = aFunc.toString(); for (var i = 1; i < arguments.length;) { if (arguments[i].constructor.name == "Array") { var [orgCode, newCode, flags] = arguments[i++]; } else { var [orgCode, newCode, flags] = [arguments[i++], arguments[i++], arguments[i++]]; } if (typeof newCode == "function" && newCode.length == 0) newCode = newCode.toString().replace(/^.*{|}$/g, ""); switch (orgCode) { case "{": [orgCode, newCode] = [/{/, "$&\n" + newCode];break; case "}": [orgCode, newCode] = [/}$/, newCode + "\n$&"];break; } if (typeof orgCode == "string") orgCode = RegExp(orgCode.replace(/[{[(\\^|$.?*+/)\]}]/g, "\\$&"), flags || ""); myCode = myCode.replace(orgCode, newCode); } return eval("(" + myCode + ")"); } TU_hookCode("gBrowser.loadOneTab", ["{", function() { var currentTab = this.mCurrentTab; }], [/(?=return tab;)/, function() { if (aReferrerURI/* && TU_getPref("extensions.tabutils.openLinkWithHistory", false)*/) { let currentHistory = currentTab.linkedBrowser.sessionHistory; let newHistory = tab.linkedBrowser.sessionHistory.QueryInterface(Ci.nsISHistoryInternal); for (let i = 0; i <= currentHistory.index; i++) { newHistory.addEntry(currentHistory.getEntryAtIndex(i, false), true); } } }] );
mzfx
Отсутствует
Страницы: 1