|
阅读:3422回复:6
怎样把FF3的书签模式改成maxthon的显示模式啊?
按照论坛以前的XD提供的方法都不行啊,
添加: #bookmarks-ptf {display:block} #bookmarks-ptf toolbarseparator {display:inline} 还有什么方法么? |
|
|
1楼#
发布于:2008-12-30 20:28
啥样子?上个图
|
|
|
|
2楼#
发布于:2008-12-30 20:28
多列显示吧. 有个扩展好像可以做到. column bookmarks
|
|
|
3楼#
发布于:2008-12-30 20:28
谢谢,column bookmarks可以,不过对FF3支持不太好啊,还有其他的扩展么
|
|
|
4楼#
发布于:2008-12-30 20:28
(function(){
if('TM_init' in window) return;
if('TreeStyleTabService' in window) return;
if (!gPrefService)
gPrefService = Components.classes["@mozilla.org/preferences-service;1"]
.getService(Components.interfaces.nsIPrefBranch);
// -- config --
gPrefService.setIntPref("browser.tabs.closeButtons", 0);
gPrefService.setBoolPref("browser.tabs.autoHide", false);
function multirowtabH(){
var H, aNode;
if (getVer()<3){
H = 22; //Fx2
} else {
H = 23; //Fx3銇с伅銈裤儢銇枃瀛椼伄澶с亶銇曘伀蹇溿仒銇﹁鏁村繀瑕併亱銈?1锝?3px:22, 14px:23
}
return H;
}
var SCROLLBARWIDTH = 25;
var TABBROWSERTABS_MARGIN = 3; //瑾挎暣蹇呰 (銉炪兗銈搞兂銈勩儨銉笺儉銉笺伄鍒?
var ARROWSCROLLBOX_MARGIN = 1; //瑾挎暣蹇呰 (銉炪兗銈搞兂銈勩儨銉笺儉銉笺伄鍒?
// -- config --
//銉夈儹銉冦儣銈ゃ兂銉囥偅銈便兗銈裤伄浣嶇疆銈广偙銉笺儷
gBrowser.scale = 2.0;
/*銈裤儢銇屽銇勬檪銇娈点仹琛ㄧず銇欍倠CSS閬╃敤 銈ゃ兂銉┿偆銉炽倰浣跨敤銇椼仾銇勩儛銉笺偢銉с兂*/
if(getVer()<3){ //Fx2
var style = <![CDATA[
@namespace url(http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul);
/* Tab Browser, replaces the horizontal arrowscrollbox
* with an overflow scroll panel
*/
.tabbrowser-tabs
{
height: 0px;
max-height: 113px; /* 3+22*5娈点伄鍫村悎*/
min-height: 0px;
}
.tabbrowser-tabs .tabbrowser-arrowscrollbox,
.tabbrowser-tabs .tabbrowser-arrowscrollbox > scrollbox,
.tabbrowser-tabs .tabbrowser-arrowscrollbox > scrollbox > box
{
height: 0px;
max-height: 110px; /* 22*5娈点伄鍫村悎*/
min-height: 0px;
}
/* hide the scroll arrows and alltabs button */
.tabbrowser-tabs .scrollbutton-up,
.tabbrowser-tabs .scrollbutton-down-stack
{
display: none ;
}
.tabs-alltabs-stack{
height: 22px ;
}
/* box */
.tabbrowser-tabs .tabbrowser-arrowscrollbox > scrollbox > box
{
display: block ;
min-width: 0 ;
margin: 0 ;
overflow-y: auto ;
padding: 0 0 0 1px ;
}
]]>.toString().replace(/\s+/g, " ");
}else{ // Gecko/2008032103 Minefield/3.0b5pre
var style = <![CDATA[
@namespace url(http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul);
/* Tab Browser, replaces the horizontal arrowscrollbox
* with an overflow scroll panel
*/
.tabbrowser-tabs
{
height: 0px;
max-height: 110px; /* (22锝?*5娈点伄鍫村悎*/
min-height: 0px;
}
.tabbrowser-tabs .tabbrowser-arrowscrollbox,
.tabbrowser-tabs .tabbrowser-arrowscrollbox > scrollbox,
.tabbrowser-tabs .tabbrowser-arrowscrollbox > scrollbox > box
{
height: 0px;
min-height: 0px;
margin-bottom:1px;
}
/* hide the scroll arrows and alltabs button */
.tabbrowser-tabs .scrollbutton-up,
.tabbrowser-tabs .scrollbutton-down
{
display: none ;
}
/* box default */
.tabbrowser-tabs .tabbrowser-arrowscrollbox > scrollbox > box
{
display: block ;
overflow-y: auto ;
}
.tabs-container > .tabs-closebutton{
padding-top:2px;
padding-bottom:0px;
}
/* Tabs */
tab .tab-text {
margin-top:2px;
}
.tabbrowser-tab {
margin: 0px 0px 2px ;
padding: 0px 1px 1px 0px ;
border: 2px solid ;
border-right-width: 1px ;
border-bottom: none ;
}
.tabbrowser-tab:hover{
margin: 0px 0px 2px ;
padding: 0px 1px 1px 0px ;
border: 2px solid ;
border-right-width: 1px ;
border-bottom: none ;
}
.tabbrowser-tab:not([selected="true"]):hover {
margin: 0px 0px 2px ;
padding: 0px 1px 1px 0px ;
border: 2px solid ;
border-right-width: 1px ;
border-bottom: none ;
}
.tabbrowser-tab[selected="true"] {
margin: 0px 0px 0px ;
padding: 0px 1px 3px 0px ;
border: 2px solid ;
border-right-width: 1px ;
border-bottom: none ;
}
]]>.toString().replace(/\s+/g, " ");
}
var sspi = document.createProcessingInstruction(
'xml-stylesheet',
'type="text/css" href="data:text/css,' + encodeURI(style) + '"'
);
setTimeout(function(){
document.insertBefore(sspi, document.documentElement);
sspi.getAttribute = function(name) {
return document.documentElement.getAttribute(name);
};
},300);
//璧峰嫊鏅傘伀銈裤儢銇屽銇勩仺銇? 銈裤儢銇屻偣銈儹銉笺儷銇椼仸銇勩倠鍫村悎銇屻亗銈嬨伄銇?
setTimeout(function(){gBrowser.mTabContainer.mTabstrip.scrollBoxObject
.ensureElementIsVisible(gBrowser.mTabContainer.childNodes[0]);
},500);
//D&D銇鏁?
if (getVer()<3.0){//2.0
gBrowser.canDrop_old = gBrowser.canDrop;
gBrowser.canDrop = function(aEvent, aDragSession){
if (aDragSession.sourceNode)
var box = aDragSession.sourceNode.boxObject;
if (aDragSession.sourceNode &&
aDragSession.sourceNode.parentNode == this.mTabContainer &&
(aEvent.screenX >= box.screenX &&
aEvent.screenX <= (box.screenX + box.width)) &&
(aEvent.screenY >= box.screenY &&
aEvent.screenY <= (box.screenY + box.height))
)
return false;
if (aEvent.target.localName == 'tab') return true;
var aNode = aEvent.originalTarget;
if (aNode.localName == 'toolbatbutton') return true;
if (aDragSession.sourceNode && aDragSession.sourceNode.parentNode == this.mTabContainer &&
aNode.localName == 'box') return false;
return true;
}
var func = gBrowser.onDragOver.toString();
func = func.replace(
'ind.style.marginLeft = newMarginLeft + "px";',
<><![CDATA[
$&
if(newIndex == this.mTabs.length)
ind.style.marginBottom = -(5+(this.mTabs[newIndex-1].boxObject.screenY - this.boxObject.screenY) * gBrowser.scale) + 'px';
else
ind.style.marginBottom = -(5+(this.mTabs[newIndex].boxObject.screenY - this.boxObject.screenY) * gBrowser.scale) + 'px';
]]></>
);
func = func.replace(
'ind.style.marginRight = newMarginRight + "px";',
<><![CDATA[
$&
if(newIndex == this.mTabs.length)
ind.style.marginBottom = -(5+(this.mTabs[newIndex-1].boxObject.screenY - this.boxObject.screenY) * gBrowser.scale) + 'px';
else
ind.style.marginBottom = -(5+(this.mTabs[newIndex].boxObject.screenY - this.boxObject.screenY) * gBrowser.scale) + 'px';
]]></>
);
eval("gBrowser.onDragOver = " + func);
} else if (getVer()<3.1){//3.0
gBrowser.canDrop_old = gBrowser.canDrop;
gBrowser.canDrop = function(aEvent, aDragSession){
if (aDragSession.sourceNode)
var box = aDragSession.sourceNode.boxObject;
if (aDragSession.sourceNode &&
aDragSession.sourceNode.parentNode == this.mTabContainer &&
(aEvent.screenX >= box.screenX &&
aEvent.screenX <= (box.screenX + box.width)) &&
(aEvent.screenY >= box.screenY &&
aEvent.screenY <= (box.screenY + box.height))
)
return false;
if (aEvent.target.localName == 'tab') return true;
var aNode = aEvent.originalTarget;
if (aNode.localName == 'toolbatbutton') return true;
if (aDragSession.sourceNode && aDragSession.sourceNode.parentNode == this.mTabContainer &&
aNode.localName == 'box') return false;
return true;
}
gBrowser.getNewIndex = function(aEvent){
var i;
if (window.getComputedStyle(this.parentNode, null).direction == "ltr") {
for (i = aEvent.target.localName == "tab" ? aEvent.target._tPos : 0; i < this.mTabs.length; i++)
if (aEvent.screenX < this.mTabs[i].boxObject.screenX + this.mTabs[i].boxObject.width / 2 &&
aEvent.screenY > this.mTabs[i].boxObject.screenY &&
aEvent.screenY < this.mTabs[i].boxObject.screenY + this.mTabs[i].boxObject.height)
return i;
if (i + 1 < this.mTabs.length &&
aEvent.screenX < this.mTabs[i].boxObject.screenX + this.mTabs[i].boxObject.width &&
aEvent.screenY > this.mTabs[i].boxObject.screenY &&
aEvent.screenY < this.mTabs[i].boxObject.screenY + this.mTabs[i].boxObject.height)
return i + 1;
} else {
for (i = aEvent.target.localName == "tab" ? aEvent.target._tPos : 0; i < this.mTabs.length; i++)
if (aEvent.screenX > this.mTabs[i].boxObject.screenX + this.mTabs[i].boxObject.width / 2 &&
aEvent.screenY > this.mTabs[i].boxObject.screenY &&
aEvent.screenY < this.mTabs[i].boxObject.screenY + this.mTabs[i].boxObject.height)
return i;
if (i + 1 < this.mTabs.length &&
aEvent.screenX > this.mTabs[i].boxObject.screenX &&
aEvent.screenY > this.mTabs[i].boxObject.screenY &&
aEvent.screenY < this.mTabs[i].boxObject.screenY + this.mTabs[i].boxObject.height)
return i + 1;
}
return this.mTabs.length;
}
var func = gBrowser.onDragOver.toString();
func = func.replace(
'this.mTabContainer.selectedItem = aEvent.target;',
<><![CDATA[
$&
this.mTabDropIndicatorBar.collapsed = true;
]]></>
);
func = func.replace(
'ind.style.MozMarginStart = newMargin + "px";',
<><![CDATA[
$&
ind.style.marginBottom = -(5+(tabBoxObject.screenY - this.boxObject.screenY) * gBrowser.scale) + 'px';
]]></>
);
eval("gBrowser.onDragOver = " + func);
} else { //3.1
var func = gBrowser._onDragOver.toString();
func = func.replace(
'this.mTabContainer.selectedItem = aEvent.target;',
<><![CDATA[
this.mTabContainer.selectedItem = aEvent.target;
this.mTabDropIndicatorBar.collapsed = true;
]]></>
);
func = func.replace(
'ind.style.MozMarginStart = newMargin + "px";',
<><![CDATA[
$&
ind.style.marginBottom = -(5+(tabBoxObject.screenY - this.boxObject.screenY) * gBrowser.scale) + 'px';
]]></>
);
eval("gBrowser._onDragOver = " + func);
//Bug 465184 - Dropping a tab on itself shouldn't detach it
func = gBrowser._onDragLeave.toString();
func = func.replace(
'this._draggingOnItself = false;',
<><![CDATA[
if (aEvent.target.localName != "tab"){
$&
}
]]></>
);
eval("gBrowser._onDragLeave = " + func);
gBrowser.getNewIndex = function(aEvent){
var i;
if (window.getComputedStyle(this.parentNode, null).direction == "ltr") {
for (i = aEvent.target.localName == "tab" ? aEvent.target._tPos : 0; i < this.mTabs.length; i++)
if (aEvent.screenX < this.mTabs[i].boxObject.screenX + this.mTabs[i].boxObject.width / 2 &&
aEvent.screenY > this.mTabs[i].boxObject.screenY &&
aEvent.screenY < this.mTabs[i].boxObject.screenY + this.mTabs[i].boxObject.height)
return i;
if (i + 1 < this.mTabs.length &&
aEvent.screenX < this.mTabs[i].boxObject.screenX + this.mTabs[i].boxObject.width &&
aEvent.screenY > this.mTabs[i].boxObject.screenY &&
aEvent.screenY < this.mTabs[i].boxObject.screenY + this.mTabs[i].boxObject.height)
return i + 1;
} else {
for (i = aEvent.target.localName == "tab" ? aEvent.target._tPos : 0; i < this.mTabs.length; i++)
if (aEvent.screenX > this.mTabs[i].boxObject.screenX + this.mTabs[i].boxObject.width / 2 &&
aEvent.screenY > this.mTabs[i].boxObject.screenY &&
aEvent.screenY < this.mTabs[i].boxObject.screenY + this.mTabs[i].boxObject.height)
return i;
if (i + 1 < this.mTabs.length &&
aEvent.screenX > this.mTabs[i].boxObject.screenX &&
aEvent.screenY > this.mTabs[i].boxObject.screenY &&
aEvent.screenY < this.mTabs[i].boxObject.screenY + this.mTabs[i].boxObject.height)
return i + 1;
}
return this.mTabs.length;
}
}
//銉囥儛銉冦偘鐢?
function debug(aMsg){
Cc["@mozilla.org/consoleservice;1"]
.getService(Ci.nsIConsoleService)
.logStringMessage(aMsg);
}
//銇撱亾銇嬨倝銇偪銉栧箙鑷嫊瑾挎暣
//銈裤儢杩藉姞鏅傘伀, 銈炽兂銉嗐兂銉勩偍銉偄銇屻伌銇忋伌銇忋仚銈嬨伄銈掗槻姝?
eval('gBrowser.addTab = ' + gBrowser.addTab.toString().replace(
'{',
'{\
setTabWidthAutomatically(null,true);'
));
//銈裤儢骞呰嚜鍕曡鏁?
var xcontent = document.getElementById("content");
var tabbrowsertabs = document.getAnonymousElementByAttribute(xcontent, "anonid", "tabcontainer");
if (getVer() > 3 && !tabbrowsertabs){ //dao's build
tabbrowsertabs = document.getElementsByClassName("tabbrowser-tabs")[0];
}
var tabsclosebutton, newtabbutton, allTabsWidth;
if(getVer()<3){
tabsclosebutton = document.getAnonymousElementByAttribute(tabbrowsertabs, "anonid", "tabstrip-closebutton").boxObject.width;
allTabsWidth = document.getAnonymousElementByAttribute(tabbrowsertabs, "anonid", "alltabs-button").boxObject.width;
newtabbutton =0;
}else{
try {
tabsclosebutton = document.getAnonymousElementByAttribute(tabbrowsertabs, "anonid", "tabs-closebutton").boxObject.width;
} catch(e){ //dao's build
tabsclosebutton =0;
}
try {
allTabsWidth = document.getAnonymousElementByAttribute(tabbrowsertabs, "anonid", "alltabs-box").boxObject.width;
} catch(e){ //dao's build
allTabsWidth =0;
}
try {
newtabbutton = document.getAnonymousElementByAttribute(tabbrowsertabs, "anonid", "newtab-button").boxObject.width;
} catch(e){
newtabbutton =0;
}
}
var arrowscrollbox = document.getAnonymousElementByAttribute(tabbrowsertabs, "anonid", "arrowscrollbox");
if (getVer() > 3 && !arrowscrollbox){ //dao's build
arrowscrollbox = document.getAnonymousElementByAttribute(tabbrowsertabs, "class", "tabbrowser-arrowscrollbox");
}
window.setTabWidthAutomatically =function(event,addTab,w){
var atab;
var max_width = getPref("userCrome.setTabWidthAutomatically.maxWidth", "int",250);
var min_width = getPref("browser.tabs.tabMinWidth", "int",100);
if (getVer()<3){
//for Fx2, 銈裤儢銇儔銉┿儍銈颁腑box骞呫亴澶с亶銇忋仾銈嬨伄銈掗樆姝?
var www=document.getElementById("main-window").boxObject.width;
document.getElementById("navigator-toolbox").maxWidth=www;
}
var boxwidth = gBrowser.mTabContainer.boxObject.width - newtabbutton - allTabsWidth - tabsclosebutton;
if(w) boxwidth = boxwidth - w;
var allTabs = gBrowser.mTabContainer.childNodes;
if(event && event.type=='TabClose')
var nTabs = allTabs.length - 1;
else
var nTabs = allTabs.length;
if(addTab) nTabs++;
var tabw = (boxwidth -SCROLLBARWIDTH) / nTabs;
if(tabw > max_width)
tabw = max_width;
else if(tabw < min_width){
var nn = Math.floor(boxwidth / min_width);
if(nn<1) nn = 1 ;
tabw = (boxwidth - SCROLLBARWIDTH) /nn;
}
//tab-strip楂樸仌
tabw = Math.floor(tabw);
var h = Math.floor((tabw*nTabs)/(boxwidth -SCROLLBARWIDTH)+0.99)*multirowtabH();
tabbrowsertabs.height = (h + TABBROWSERTABS_MARGIN);
arrowscrollbox.height = (h + ARROWSCROLLBOX_MARGIN);
//銇撱伄if銉栥儹銉冦偗銇? 鐝惧湪銇偪銉栥亴銇勩仱銈傝銇堛倠銈堛亞銇偣銈儹銉笺儷銇曘仜銈?
if(event && event.type=='TabOpen'){
aTab = event.target;
ensureVisibleElement(aTab);
}else{
setTimeout(function(){
aTab = gBrowser.mCurrentTab;
ensureVisibleElement(aTab);
},100);
}
//鐒¢銇儷銉笺儣銈掋偑銉熴儍銉?
if(event && event.type=='resize' && allTabs[0].minWidth == tabw) return;
if(event && event.target.localName=='tab' && allTabs[0].minWidth == tabw){
aTab = event.target;
aTab.maxWidth = tabw;
aTab.minWidth = tabw;
return;
}
for (var i=0, len=allTabs.length; i<len; i++) {
aTab = allTabs[i];
aTab.maxWidth = tabw;
aTab.minWidth = tabw;
}
}
window.setTabWidthAutomatically2 =function(event){
var max_width = getPref("userCrome.setTabWidthAutomatically.maxWidth", "int",250);
var min_width = getPref("browser.tabs.tabMinWidth", "int",100);
var boxwidth = gBrowser.mTabContainer.boxObject.width - newtabbutton - allTabsWidth - tabsclosebutton;
var allTabs = gBrowser.mTabContainer.childNodes;
var nTabs = allTabs.length - 1;
setTimeout(function(allTabs,nTabs){
var tabw = (boxwidth -SCROLLBARWIDTH) / nTabs;
if(tabw > max_width)
tabw = max_width;
else if(tabw < min_width){
var nn = Math.floor(boxwidth / min_width);
if(nn<1) nn = 1 ;
tabw = (boxwidth - SCROLLBARWIDTH) /nn;
}
//tab-strip楂樸仌
tabw = Math.floor(tabw);
var h = Math.floor((tabw*nTabs)/(boxwidth -SCROLLBARWIDTH)+0.99)*multirowtabH();
tabbrowsertabs.height = (h + TABBROWSERTABS_MARGIN);
for (var i=0, len=allTabs.length; i<len; i++) {
var aTab = allTabs[i];
aTab.maxWidth = tabw;
aTab.minWidth = tabw;
}
},250,allTabs,nTabs);
}
//pref瑾伩杈笺伩
function getPref(aPrefString, aPrefType, aDefault){
var xpPref = Components.classes["@mozilla.org/preferences-service;1"]
.getService(Components.interfaces.nsIPrefService);
try{
switch (aPrefType){
case "str":
return xpPref.getCharPref(aPrefString).toString(); break;
case "int":
return xpPref.getIntPref(aPrefString); break;
case "bool":
default:
return xpPref.getBoolPref(aPrefString); break;
}
}catch(e){
}
return aDefault;
}
//浠ヤ笅銇偪銉栧箙鑷嫊瑾挎暣銇仧銈併伄銈ゃ儥銉炽儓鐧婚尣
setTimeout(function(){setTabWidthAutomatically();}, 10);
window.addEventListener("resize", function(event){
setTabWidthAutomatically(event);
}, false);
//鍒濆洖璧峰嫊鏅傘儉銉熴兗銈ゃ儥銉炽儓
setTimeout(function(){
var event = document.createEvent("Events");
event.initEvent("resize", true, false);
window.dispatchEvent(event);
}, gBrowser.mTabContainer.childNodes.length * 200 + 1000);
setTimeout(function(){
var event = document.createEvent("Events");
event.initEvent("resize", true, false);
window.dispatchEvent(event);
}, gBrowser.mTabContainer.childNodes.length * 1000 + 1000);
if(getVer()<3)
gBrowser.tabContainer.addEventListener('TabClose', setTabWidthAutomatically,false);
else{
gBrowser.tabContainer.addEventListener('TabClose', setTabWidthAutomatically2,false);
gBrowser.tabContainer.addEventListener('SSTabRestored', ensureVisible, false);
}
gBrowser.tabContainer.addEventListener('TabOpen',setTabWidthAutomatically,false);
//銇撱亾銇嬨倝銇? 鐝惧湪銇偪銉栥亴銇勩仱銈傝銇堛倠銈堛亞銇偣銈儹銉笺儷銇曘仜銈?
gBrowser.tabContainer.addEventListener('TabSelect', ensureVisible, false);
function ensureVisible(event){
var aTab = gBrowser.selectedTab; //event.target;
ensureVisibleElement(aTab);
}
function ensureVisibleElement(aTab){
try{
mShell = Components.classes["@mozilla.org/inspector/flasher;1"]
.createInstance(Components.interfaces.inIFlasher);
mShell.scrollElementIntoView(aTab);
}catch(e){}
}
function getVer(){
const Cc = Components.classes;
const Ci = Components.interfaces;
var info = Cc["@mozilla.org/xre/app-info;1"].getService(Ci.nsIXULAppInfo);
var ver = parseInt(info.version.substr(0,3) * 10,10) / 10;
return ver;
}
})();以上保存到userchrome.js中即可。[/code] |
|
|
5楼#
发布于:2008-12-30 20:28
怎么代码里面还有乱码啊?
|
|
|
6楼#
发布于:2008-12-30 20:28
|
|
