彭梓峰
小狐狸
小狐狸
  • UID31008
  • 注册日期2009-11-08
  • 最后登录2010-01-31
  • 发帖数67
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
阅读:1949回复:4

高手帮忙改下代码。

楼主#
更多 发布于:2009-12-22 00:34
@namespace url(http://www.mozilla.org/keymaster/gateke ... s.only.xul);
#navigator-toolbox > toolbar:not(#toolbar-menubar) {
visibility: collapse !important;
}
#main-window #navigator-toolbox:hover > toolbar:not([collapsed="true"]) {
   visibility: visible !important;
}

这个代码是stylish自动隐藏导航栏、书签栏的代码,我想在其中加个延时,就是说鼠标划上去自动弹出来后延时5秒后自动隐藏,希望哪个高手能帮忙改下,谢谢
ferret
千年狐狸
千年狐狸
  • UID21816
  • 注册日期2007-11-11
  • 最后登录2013-03-22
  • 发帖数1114
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
1楼#
发布于:2009-12-22 00:34
延迟用css没可能
xelnaga
千年狐狸
千年狐狸
  • UID1911
  • 注册日期2005-01-08
  • 最后登录2022-04-20
  • 发帖数1725
  • 经验85枚
  • 威望0点
  • 贡献值8点
  • 好评度5点
  • 社区居民
2楼#
发布于:2009-12-22 00:34
晕,看错要求了,看成鼠标指上去延迟出现地址栏了:evil:
还好代码类似,临时改了一下,试下来还可以


边学js边做的代码,自我感觉效果还可以,只在自己一台机器上成功,版本3.5.6


据我所知现在的CSS无法设延迟。所以先把这段STYLISH里的CSS代码删掉。
PS. 我觉得如果只是改CSS的话,在userChrome.css里改就是了,不需要特别装STYLISH

接下来
1、安装userChromeJS (userChrome.js)
http://userchromejs.mozdev.org/
页面里找Installation下的
userChromeJS v1.1
这个扩展可以调用自己的脚本来为FX界面增加功能

2、装完,重启
在配置文件夹里的chrome子文件夹下,会出现一个userChrome.js的文件
用文本编辑器(比如Notepad2、记事本等)打开这个文件
在最后,新增加一行,写上
userChrome.import("autohide.uc.js", "UChrm");


保存,关闭文件

3、把下面的代码保存成autohide.uc.js文件后,放进配置文件夹下的chrome子文件夹里(和userChrome.js同样位置)
重启FX
然后把鼠标移动到菜单栏地址栏就会出现
再把鼠标移动到网页位置则隐藏,延迟5秒隐藏


// ==UserScript==
// @name           autohide
// @include        main
// @description    隐藏地址栏,鼠标移出一定时间则隐藏地址栏
// @compatibility  Firefox 3.5
// ==/UserScript==

var ucjsAutoHide = {

	UPDATE_INTERVAL: 1000,	// 计数间隔,单位毫秒,必须与count中this.ct自增量同步调整
	ct: 0,	// 计数器
	sch: 0, // 是否计数中
	_updateTimer: null, 
	
	// 隐藏
	init: function() {
		var tb = document.getElementsByTagName('toolbar'); 
		for (i=0;i<tb.length;i++){
			if (tb[i].className != 'chromeclass-menubar')
			tb[i].style.visibility = 'collapse';
		}
	},

	// 显示
	showtb: function() {
		if (this._updateTimer) {
			window.clearTimeout(this._updateTimer);
			this._updateTimer = null;
		}
		this.ct = 0;
		this.sch = 1;
		var tb = document.getElementsByTagName('toolbar'); 
		for (i=0;i<tb.length;i++){
			if (tb[i].className != 'chromeclass-menubar')
			tb[i].style.visibility = 'visible';
		}
	},
	
	// 判断鼠标在菜单栏停留时间,以判断是否显示
	count: function() {
		this.sch = 0;
		this.ct = this.ct + 1000;
		// this.ct >= [数值],[数值]必须比所需要停留时间多1000
		if (this.ct >= 6000) {
			this.init();
			if (this._updateTimer) {
			window.clearTimeout(this._updateTimer);
			this._updateTimer = null;
			this.ct = 0;
			}
		} else {
			var callback = function(self) { self.count(); };
			// 递归
			this._updateTimer = window.setTimeout(callback, this.UPDATE_INTERVAL, this);
		}
	},

	// 判断count是否在执行中
	srtc: function() {
		if (this.sch != 0){
			this.count();
		}
	},

};

// 判断是否是主窗口
if (location != "chrome://browser/content/browser.xul") throw "stop";

// 执行隐藏
ucjsAutoHide.init();

// 监听 执行显示 
document.getElementById("navigator-toolbox").addEventListener("mouseover", function() { ucjsAutoHide.showtb(); }, false);

//监听 执行隐藏 
document.getElementById("appcontent").addEventListener("mouseover", function() { ucjsAutoHide.srtc(); }, false);
xelnaga
千年狐狸
千年狐狸
  • UID1911
  • 注册日期2005-01-08
  • 最后登录2022-04-20
  • 发帖数1725
  • 经验85枚
  • 威望0点
  • 贡献值8点
  • 好评度5点
  • 社区居民
3楼#
发布于:2009-12-22 00:34
有一个问题
因为现在上面代码是“速显慢隐”影响不太大

但是如果是“慢显”(鼠标停留后隔几秒出现地址栏)就容易发现
当我鼠标在操作菜单时,地址栏仍然是会弹出的
弹出菜单被抓在了navigator-toolbox里面了
如果我希望操作弹出菜单时,地址栏可以不出现应该怎么做
怎么获取navigator-toolbox下面,除了那些id为menu_FilePopup等等的菜单元素意外的集合?
彭梓峰
小狐狸
小狐狸
  • UID31008
  • 注册日期2009-11-08
  • 最后登录2010-01-31
  • 发帖数67
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
4楼#
发布于:2009-12-22 00:34
哇靠....
你太有才了。慢隐有很大的好处,平时我用鼠标在搜索栏切换引擎时。因为引擎多了所以切换过后总是会被隐藏,我又要重新将鼠标划上去将其弹出。
现在好了,终于解决了。
这个看似这是个小问题,其实这是个很实在并且很心烦的问题。
对于很多简洁的火狐用户来说,这无疑是个极好的脚本
我的火狐是用的陵川3.57优化绿色版,速度是飞快的。
在界面上我将菜单栏、地址栏、状态栏和书签工具栏、都隐藏了,只留下被压缩后的标签栏,我唯一不满意的就是书签工具栏和地址栏的隐藏脚本。
再次感谢你.....不愧为“千年狐狸”
游客

返回顶部