Mar
07

今天在写一个鼠标悬停下拉菜单过程中,遇到一个很抓狂的问题。既然是鼠标悬停效果,那就用到了jQuery的2个事件,mouseover和mouseout(在jQuery 1.3的API手册中只有这两个鼠标移入移出事件)。

先看下使用mouseout的效果:

Tips:您可以在运行代码前对其进行修改!

我们发现使用mouseout时,鼠标只要在容器里一移动,就被出发了hide(),其实是因为mouseout事件也会影响到子元素,也就是事件可能被同时绑定到了该容器的子元素上,所以鼠标移出每个子元素也都会触发我们的hide()。
[阅读全文:jQuery中使用mouseleave代替mouseout]

Feb
21

一般来说,在对一个文件域(input type=”file”)使用了验证后,我们总会希望把文件域中的值给清空了(否则错误的文件仍然会被提交),而在IE中,安全设置的原因,是不允许更改文件域的值的(也就是不能使用val(“”))

那么很显然,我们就只能换个思路,把这个input元素复制一个,然后将原来的删除。
在IE下复制元素的时候,其中的值是不会被复制的,所以就达到了清空文件域的目的了。
而在Firefox下,其中的值也会被一同复制,那么我们就顺便清空一下就做到兼容了。
代码如下:

var file = $(":file");
file.after(file.clone().val(""));
file.remove();
Feb
18

今天好友给我看了一个网站:http://www.jijiblog.com/
原先以为只是有人和我用了同一套模板,但是经过我仔细打量,这并不是单纯是模板雷同而已了,我博客几乎所有的内容都被盗用到了他所谓的”JiJi’s Blog”上,并且我还能够发现部分文章里仍然有steveluo这样的文字痕迹。

我想了想,在博客这几次迁徙中,有好几个环节可能导致这些数据的泄露,这兄弟正好捡了个皮夹子,要托工信部的福,让他好不费功夫拿到了我这个“收视率”爆低的博客,内容还挺杂,难道是他和我臭味相投么?

这兄弟技术还是可以的,能改的都改了,可惜在文章的排名上,他可能就比较糟糕了,我的许多文章都能在google第一页搜到,而他的这些文章可能10页开外都不见踪影。

干IT这行,需要的是积累,享用别人的成果往往会让自己止步不前。

2010年我有空还是换套模板吧呵呵,这套模板也用了好多年了,新的开始确实要有一个新的态度了。

Feb
01

重见天日啦!

Filed under (生活随想) by Steve Luo at 2010-01-02

经历了互联网整治狂潮的冲击,我的博客迁徙了好多地方,关闭了好久了,现在终于又重新开放了。

其实本站是备过案的,只是迫于各机房的备案申报机制以及服务器的问题(服务器是朋友的,我没理由每天催着别人),所以一拖再拖,让我最后下决心把博客搬到了美利坚的国土上。。无奈啊,速度虽慢,倒还稳定,就这样凑合着吧,日后有机会还是要弄一台自己的服务器。

就着这次大迁徙,顺便也把博客升级到了最新版。不过Google Adsense貌似要停一个月了,竟然PIN码没收到。。晕,重新申请一个,又得等好久。

不过这个HostGator的空间是去年暑假时候买的,没多少时日了,下一步计划可能会搞一个日本的空间,因为最近发现日本网站速度挺快的,价格似乎也不是那么贵。希望中日关系不会影响到互联网。。。

Aug
16

今天在修改一个tab样式的时候遇到一个问题,用了span:hover,想达到一个鼠标悬停效果。可是调试了半天,hover的效果就是不出现。
之前错误的书写顺序:

span{display: block; width: 110px; height: 40px;}
span:hover{background: 0 -40px;}
span.button-1{background:url(../images/tabs/button_1.png);}

这样测试出来的结果跟我预期的不一样,我想在span.button-1定义背景图片,然后在鼠标经过时hover显示悬停效果。本应该是会移到背景的第40像素开始显示,可是仍然只显示原始图像。
经过多次测试,终于发现是由于伪类的书写顺序不正确造成的。网上查阅了一下资料,的确伪类有明确的书写顺序规定,如果错了的话就可能造成显示结果不正确。
后来分析一下我的CSS,发现可能是由于最后一行button-1的样式把hover的background又给覆盖了。于是把伪类放到最后,也就是必须将伪类写在本身选择器之后。问题解决。

虽然我的这个问题和伪类之间的顺序并不是很相关,但是这些伪类之间的顺序还是值得关注一下的,省的以后又出现同样的问题。
顺序如下:

a:link
a:visited
a:hover
a:active

总结一下就是LVHA,听说这个叫爱恨原则,LoVe/HAte,便于记忆吧呵呵。

Aug
03

今天在做一个站的时候需要对Wordpress的文章进行调用,也就是在Wordpress以外环境,例如wordpress安装在/blog/目录下,而根目录下的index.php需要调用博客最新文章。

很高兴在关于非WP目录下的.php文件显示文章摘要或者别的WP信息的方法一文中找到了实现方法,也很容易上手,放在一个空白的测试页中运行成功。

不过当我把Wordpress的永久链接(Permalink)形式从默认改成了任何伪静态形式,文章列表调用就失效了,显示空白。

后来查阅Wordpress支持论坛,似乎也有人遇到过由于更改了默认的永久链接设置而造成列表调用失败的问题,不过作者似乎自己解决了该问题。问题主要可能是出现在将Wordpress安装在子目录下,如/blog/,而在永久链接设置的地方是不需要指定目录的。然而在自行外部调用的时候就出现了问题,这个可能是Wordpress设计上的一个BUG吧。

我尝试了一下加上了目录的路径,/blog/%postname%/,这样设置以后列表调用成功显示内容,只不过,在Wordpress中的所有永久链接地址就出现了2次/blog/,不过这个却不影响使用,只是不好看而已。囧
[阅读全文:非WordPress目录调用最新文章列表或摘要方法(解决永久链接问题)]

Jul
21

终于下定决心要好好做英文站了,所以又要开始基础设施建设了。。购买空间总归是最大的投入了,经过sh18的推荐和自己的口碑调查,决定使用HostGator

不过看了一下好像由于某些丢人的原因,导致中国用户无法“方便”地购买到HostGator空间,仅接受电汇和西联汇款,不能使用PayPal和信用卡支付。

由于我白天要实习,所以根本没有时间跑去银行或者邮局搞西联汇款。于是懒人总归会想懒办法,既然不接受中国用户的,那我就假装成国外用户不就好了。

根据调查,HostGator仅仅对中国用户采取严格审核制度,对于国外用户,一系列的购买过程都是无人工干预的。所以找国外的朋友替我购买一下就OK了(起初还想过使用国外代理来完成购买,不过想到其中可能涉及到帐号安全,所以还是放弃了)。

经过我的观察,在HostGator主机购买过程中,会记录购买人的IP地址。据我推断最后审核的时候就是根据你的IP地址以及注册时填选的国家与联系地址来判断的,因此我找了澳大利亚的同学,完全模拟了一个澳大利亚用户的购买过程。连PayPal的支付过程也是在对方机器上完成的(QQ远程协助)。

为了证实这个方法是否可行,我等了一下下午,似乎HostGator还没有将我的账号停止,也没有任何PayPal的退款信息。这里值得一提的是,在PayPal付款后,竟然接到了PayPal上海办事处打来的电话,对我刚才的消费行为进行确认。这点让我很是惊讶,查了一下来电号码,确实是PayPal上海的电话,外国人做事情确实挺周到的呵呵。

完成了HostGator的购买,当然要开始用了,首当其冲就启用了HostGator的SSH权限,然后就开始慢慢捣鼓英文站啦。

购买空间其实也预示着日后会将主要精力放在英文站的建设上,博客上也会开始发布关于英文站的内容。

Dec
21

这次在网站的URL静态化中需要加入一个包含中文的参数,比如:/list-103.类别.html

中文部分就在类别处,由于我只是将URL中需要的部分用正则表达式提取出来然后Rewrite到响应的页面即可,所以不存在匹配中文这种稍微有点复杂的正则表达式。

不过这条规则使用以后,重写后显示的页面出现了问题,于是加了个echo显示传入的“类别”。

发现是乱码,然而如果我在浏览器中直接输入重写前的网址,中文是能够显示的,因此这里在URL中可能存在编码不统一的问题。

URL中其实也是有编码的,百度和谷歌识别出来的URL就是用了不同的编码,Google是UTF8的,而百度是GB2312的,所以对于那些URL中包含中文的朋友来说的确是挺痛苦的,鱼与熊掌不可兼得。

由于这次我使用的是GBK编码,所以URL应该也是属于GB2312的,然而经过资料查阅,发现不管是Apache还是ISAPI_Rewrite,URL均识别的是UTF8编码的,因此,这里就出现了乱码。

需要说的是,这里使用UNICODE过的URL也是没用的,因为编码不同,UNICODE出来的URL地址也是不同的,所以最终的解决办法,也只有是将网页转换成UTF8编码了。

Dec
19

那天学院网站正式上线后,不少用傲游、世界之窗之类的同学和我说看到网站的Favicon仍然是PHPCMS的。
起初我以为是由于当初测试版网站运行时因使用过默认模板而将Favicon残留在缓存中了,让他们清空世界之窗或者傲游的Favicon缓存

不过好像没有效果,当网站载入一遍之后又出现了PHPCMS 的默认Favicon。

于是我检查了好几遍网页的HTML代码,但是并没有发现定义网站Favicon的代码。

<link rel="shortcut icon" href="favicon.ico" type="image/x-icon" />

最后一个办法就是去找到这个.ico文件,然后删除咯~在网站根目录发现Favicon.ico,个人认为浏览器会默认读取网站根目录下的Favicon.ico来作为网站的favicon,这样是不用在HTML中定义的。

Dec
17

今天在制作一个登录表单验证的时候,遇到了一个非常令人恼火的问题。因为我需要登录到别人做好的系统中,因此表单中的各个对象(包括input文本以及一个隐藏input)都必须按照原有的名称来做。这样就出现问题了。

也许是我不了解.Net,不知道为什么表单中input的name都是带有冒号的。。。比如:Login1:tbName

这个名称很明显,一放到javascript中就不好使了,我alert一下都不行哎。。。人家根本不认冒号的嘛

alert(document.myform.Login1:tbName.value);

去掉冒号一切正常,所以断定就是冒号的问题。谷歌一下(最近开始慢慢不用百度了),搜form冒号,出来的基本上都是冒号的作用什么的,貌似没有人遇到过我这样的问题。。。

于是就得想其他办法来读取这个input文本的value了。正好看到一段代码中有用getElementById的,于是就尝试了一下。由于我基本属于没有学过javascript的,所以平时都只是看看改改别人的代码,只懂得些皮毛。所以要用语句都得去查查手册什么的~

网上找到一些比较有用的方法:

document.getElementById("link").href;
document.getElementById("link").target;
document.getElementById("img").src;
document.getElementById("img").width;
document.getElementById("img").height;
document.getElementById("input").value;
document.getElementById("div").innerHTML;

这里也可以读取input的value,不过是通过id来获取的,所以这样就不会影响到表单数据的传递,而达到我对表单验证的目的了。

top
48 queries. 0.349 seconds.