什么中间? 中键?如果是中键的话, 不加...修改 FF 的 onmouseout 事件...
用编程方法代替...新附件:
http://groups.google.com/group/shawlqiu/web/XContextMenu1%5BFix_eventout%5D.7z
用编程方法代替...新附件:
http://groups.google.com/group/shawlqiu/web/XContextMenu1%5BFix_eventout%5D.7z
有人觉得需要 N级子菜单么...
鄙人觉得没必要...
如果有N人需要的话, N>5
我会升级到2.0, 弄个无限级子菜单...
你可以在 style 目录自己重新建一个样式
调用时设置 Instance.DefaultStyle 选择....to: gzdiablo
如果可以用算法替代话, 一般我不会用正则, 正则除了IE支持效率良好, 其他浏览器不见得一样好...则
至于结构嘛, 编程第一要则, 可扩展, 你觉得什么地方这个 ContextMenu 不可扩展?像下面这个东西, 结构和正则写得来不...?
http://groups.google.com/group/shawlqiu/web/Styler1-2_2.7z
不过问题依然存在
正则表达式还有待提高
程序结构依然以过程为主体 没有明确的分工 不过本身实现的功能就比较单一 也不好看出有什么很大的你的正则表达式*?使用太多 很多情况使用贪婪匹配完全可以实现 没必要用贪婪匹配
程序结构的话是凭经验积累下来的
下面这个是我仿造EXT做的tab.这里是我的程序结构模式
http://www.techease.com.cn/gzdiablo/tabcontrol/a2.html
靠...别老拿正则说事, 正则也是一些离奇的算法拼起来的...
不过 styler 结构确实不行....老早俺看着就不大爽, 暂时没时间升级...to: tantaiyizu
开发期没考虑什么美观不美观, 我只考虑扩展..
你如果能把效率提高 50%, 那我承认你比我强...不行的话给我闭嘴...http://shawlqiu.googlegroups.com/web/Highlights_v1-9_3.7z别说我黑, 让你给我写代码, 不行的话弄一个你以正则为主要技术写的东西, 我把效率提高 50%...
难道我要用设计模式设计客户端脚本?
工厂模式..., 当然, 里面还要带个模板模式...然后写成N个OBJECT, 可是JS没有Interface...
大概看了一下你的代码 单在表达式的上面 想提高效率怕是很难
但仍然看到不少 贪婪匹配就可以实现的功能LZ用了非贪婪匹配
{
var re_ = /^(f|ht)t(p|ps)\:\/\/[\w\-]+?\.[\S]+$/i;
/*
如果只是判断http(s)://www.xxx.com到没问题
如果加上port
http://www.xxx.com:port
ftp的 username:[email protected]:port怎么办
*/
if(!re_.test(this[i].value))
{
bBln = false;
arTemp[arTemp.length] = tlForm[i].name.bold().fontcolor('red')
+ ': invalid url address (' + tlForm[i].value.fontcolor('red') + '). ' +
'<br/>correct url sample: http://www.google.com/'
}
} // end if 2 if(re.test(tl.number))
{
if(/[^0-9]/i.test(this[i].value))//如果是判断是否是数字的话 漏了负数和小数点
{
bBln = false;
arTemp[arTemp.length] = this[i].name.bold().fontcolor('red') +
': character must be digital ' + ('[0123456789]').fontcolor('blue');
} // end if 2 1
} // end if 2 function fClearHtml(sSrc, bPadBr)
{
sSrc = sSrc.replace(/<[^>]*?>/g, '');// 没必要用非贪婪
sSrc = sSrc.replace(/\r\n[\s]*\r/g, '\r');// /\r?\n[\s*]/g
sSrc = sSrc.replace(/^(\r\n|\r|\n)|\n$/g, '');/^(\r?\n|\r)&/g
sSrc = sSrc.split('\n');
for(var i = 0, j = sSrc.length; i < j; i++ )
{
sSrc[i] = sSrc[i].replace(/^\s+|\s+$/g, '');
}
if(bPadBr)sSrc = sSrc.join('<br/>');
else sSrc = sSrc.join('\n');
return sSrc;
} // end function fClearHtml(sSrc, bPadBr) // shawl.qiu code
代码是function __XContextMenu_HiddenAllMenu()
{
for(var i=0, j=window.__XContextMenu_SET.length; i<j; i++)
{
window.__XContextMenu_SET[i].style.display = "none";
}
}notfunction __XContextMenu_HiddenAllMenu(){
for(var i=0, j=window.__XContextMenu_SET.length; i<j; i++){
window.__XContextMenu_SET[i].style.display = "none";
}
}
加楼上, 俺学的杂, 基本上什么都会点....to gzdiablo:
几年前我就觉得正则没玩头...
所不同的是不同语言的使用...
所以嘛, 本来我不想在正则上叫板, 可是你老叫....至于程序结构嘛, 使用JS没啥说的...因为JS以小巧为上...
问题不是想象中那么简单, 如果是导航菜单, 很容易的...
下面是一个无限级导航菜单,
http://shawlqiu.googlegroups.com/web/XMenu2.7z
类似 XMenu 这样的东西我也写了几个...不过右键菜单要考虑的问题多了去...