Chrome 侧栏书签扩展(预览)

基本可以使用了,只是切换标签的时候有闪烁。
上次在 Godaddy 上安装 awstats 后,没多久就发现保存日志的文件夹不能直接访问。但是还可以用 HTTP 方式访问,于是改用 wget 获取。
现在,wget 也不行了。经过测试,Godaddy 已经屏蔽了在服务器上执行命令获取HTTP内容的方式(cron、SSH)。
要获取日志文件还是有办法的,下面我写的 PHP 脚本用来获取日志并更新统计数据。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | <?php $dirbase = dirname(__FILE__).'/logs/'; // 日志存放位置 $urlbase = 'http://domain/stats/logs/'; // 日志源 $auth = 'user:pass'; // 账号密码 $config = 'xxx'; // awstats 配置名 $data = get_data(''); preg_match_all('/"([^"]+\.zip)"/',$data,$link); $link = $link[1]; foreach($link as $v){ if(head_data($v)){ $data = get_data($v); file_put_contents($dirbase.$v,$data); } } header('Location: cgi-bin/awstats.pl?config='.$config.'&update=1'); function get_data($filename){ global $urlbase,$auth; $ch = curl_init(); curl_setopt($ch,CURLOPT_URL,$urlbase.$filename); curl_setopt($ch,CURLOPT_USERPWD,$auth); curl_setopt($ch,CURLOPT_RETURNTRANSFER,true); $data = curl_exec($ch); curl_close($ch); return $data; } function head_data($filename){ global $urlbase,$dirbase,$auth; $ch = curl_init(); curl_setopt($ch,CURLOPT_URL,$urlbase.$filename); curl_setopt($ch,CURLOPT_USERPWD,$auth); curl_setopt($ch,CURLOPT_FILETIME,true); curl_setopt($ch,CURLOPT_NOBODY,true); curl_exec($ch); $head = curl_getinfo($ch); curl_close($ch); if($head['filetime'] > @filemtime($dirbase.$filename)){ return true; }else{ return false; } } |
设置好后就可以直接用绑定的域名访问了!
———–
2011/11/8
Linux 服务器的日志文件只能在 Godaddy 网站上的后台管理看了
从网上找了个很小的解决方案 Unit PNG Fix,不过它并不能处理处理 :hover 伪类。代码不长,很容易就能看明白,它对需要应用透明的每个元素设置 AlphaImageLoader 滤镜。由于 JS 设置的样式优先级比较高,覆盖了 :hover 设置的样式,导致失效。
既然设置元素的样式不行,那么直接设置样式表对象呢?styleSheets是 document 的样式表对象集合,每个样式表对象下面还有两个重要的集合 imports 和 rules。imports 是导入的样式表的集合,rules 则是样式表规则的集合,修改 rules 就可以使 png 透明并且 :hover 不失效。
第一个函数,用来应用 AlphaImageLoader 滤镜。
1 2 3 4 5 6 7 8 9 | function fix_png_style(style,src){ if(/\.png$/i.test(src)){ // 非 png 图片不处理 style.filter = 'progid:DXImageTransform.Microsoft.AlphaImageLoader(src="' + src + '",sizingMethod="crop")'; style.backgroundImage= ''; return true; } return false; } |
对于图片,还需要进行更多的处理。
10 11 12 13 14 15 | function fix_png_image(img){ img.width += 0; // 宽高都要处理 img.height += 0; // 否则图片会变成正方形 fix_png_style(img.style,img.src) && (img.src = "clear.gif"); // 红叉补丁,1个像素的gif图片 } |
给样式表对象应用补丁。
16 17 18 19 20 21 22 23 | function fix_png_sheets(sheets){ for(var i=sheets.length;i--;){ for(var j=sheets[i].rules.length;j--){ style = sheets[i].rules[j].style; fix_png_style(style,style.backgroundImage.replace(/.*\("?(.*?)"?\)/,'$1')); } } } |
上面的函数还存在一个问题,它没有处理导入的样式表,再改一下。
16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | function fix_png_sheets(sheets,path){ var sheet,src; for(var i=sheets.length;i--;){ sheet = sheets[i]; path = (/^([\/\\]|http:)/i.test(sheet.href)?'':path)+ sheet.href.replace(/[^\/\\]+$/,''); fix_png_sheets(sheet.imports,path); for(var j=sheet.rules.length;j--;){ style = sheet.rules[j].style; src = style.backgroundImage.replace(/.*\("?(.*?)"?\)/,'$1'); src = (/^([\/\\]|http:)/i.test(src)?'':path)+src; fix_png_style(style,src); } } } |
最后给页面上的图片和样式表应用上面的函数。
1 2 3 4 5 6 7 8 9 10 11 | <!--[if lt IE 7]> <script type="text/javascript"> window.attachEvent('onload',function(){ var imgs = document.getElementsByTagName('img'); for(var i=imgs.length;i--;){ fix_png_image(imgs[i]); } fix_png_sheets(document.styleSheets,'/'); }); </script> <![endif]--> |