Archive | HTML / CSS / Javascript RSS feed for this section

Json取得object长度

取得Array的长度,只需arr.length即可。但返回值是一个object,这样取到的length是1。此时可以这样写


var length=0;
for (i in obj){
length++
}

 

如果返回的是datetype是string,则需先eval
Read more…

make Google Account Multi-Login script work for Firefox 3.5

升级到firefox 3.5之后,Google Account Multi-Login 就不能切换用户了。去主页看了一下,也没有新版本可以更新。

检查了一下脚本,发现自第83行开始的这几行出了问题


this.parentNode.Email.value = un;
...

 

貌似firefox 3.5那备受好评的新Javascript引擎没办法识别form.field_name这种用法。Firebug的错误提示显示:this.parentNode.Email is undefined

于是做了一点修改,你可以直接点这里安装修改过的版本:install Google Account Multi-Login script for Firefox 3.5

如果你要自己动手的话,首先你需要打开google_account_multi-log.user.js文件,它的位置是
C:\Documents and Settings\{windows user name}\Application Data\Mozilla\Firefox\Profiles\{firefox profile name}.default\gm_scripts\google_account_multi-log
注意,{}部分需要替换成你自己的用户名。

Read more…

链接点出统计补完

在某处用上了chedong提供的基于Google Analytics的点出统计,是通过在链接被触发的时候加上监测outbound,代码如下

document.onclick = function(e) {
e = e || event;
var el = e.target || e.srcElement;
if ( el.tagName=='A' ) {
pageTracker._trackPageview("\/clickto/" + window.location.href.replace("http:\/\/www.chedong.com/", "") +
el.href.replace("http:\/\/", "\/"));
}
}
 

测试了一下,发现这样监测不到图片链接。于是加了一行,变成这样。

document.onclick = function(e) {
e = e || event;
var el = e.target || e.srcElement;
if ( el.tagName=='IMG' )  el = el.parentNode
if ( el.tagName=='A' ) {
pageTracker._trackPageview("\/clickto/" + window.location.href.replace("http:\/\/www.chedong.com/", "") +
el.href.replace("http:\/\/", "\/"));
}
}
 

但是,除<a><img /></a>以外,很多时候我们的链接还可能是<a><span>text</span></a>,又或<a>text<em>text<em></a>,单判断当前element是IMG的话,还是不够的。

于是再改一下,变成这样

document.onclick = function(e) {
e = e || event;
var el = e.target || e.srcElement;
if ( el.parentNode.tagName=='A' ) el = el.parentNode
if ( el.tagName=='A' ) {
pageTracker._trackPageview("\/clickto/" + window.location.href.replace("http:\/\/www.chedong.com/", "") +
el.href.replace("http:\/\/", "\/"));
}
}
 

另有,fisher写到,可用window.location.pathname替代window.location.href.replace("http:\/\/www.chedong.com/", "")。亦即

document.onclick = function(e) {
e = e || event;
var el = e.target || e.srcElement;
if ( el.parentNode.tagName=='A' ) el = el.parentNode
if ( el.tagName=='A' ) {
pageTracker._trackPageview("\/clickto/" + window.location.pathname + el.href.replace("http:\/\/", "\/"));
}
}
 

JavaScript in_array function

jQuery有个inArray( value, array ),返回的是key,如果没找到,则返回-1。

用的时候老混淆,所以写一个可以和php里in_array一样用法的。


   function in_array(v,a){
      for(key in a){
         if(a[key]==v) return true
      }
      return false
   }

 

若有jQuery,可直接写


   function in_array(v,a){
      return jQuery.inArray(v,a)>=0;
   }