手机浏览 RSS 2.0 订阅 膘叔的简单人生 , 腾讯云RDS购买 | 超便宜的Vultr , 注册 | 登陆
浏览模式: 标准 | 列表2024年11月的文章

如何使页面的链接在新窗口中打开

我不知道这篇文章怎么算,因为我最后还是用了JS,所以我归类到javascript分类了。

页面中的链接在新窗口中打开,一般出现在专题、网页地图、列表中,因为在一般的网页里,如果所有的链接都是开新窗口,肯定用户体验一般。而如果每个链接都加上target="_blank"的话,仿佛听说是不符合w3c规范。但我是觉得,如果一个网页有上百个链接,都加上Target="_blank",那是多少字节啊。

虽然现在不再是“惜字节如金”,但该节约的还是要节约。

于是我在页面的<head>标签里加上了<base target="_blank" />,因为记忆中,这个标签还可以控制showModalDialog里的链接不开新窗口或者影响父窗口(当然那时候是<base target="_self">)

兴冲冲的放到网上,结果同事测试下来,IE6和Firefox都正常。但IE7和IE8却都不正常。没办法,只能用js解决。本想用jquery来搞定,但为了这么小的功能就加载一个几十K的jQuery,我还不如直接在链接里加上target="_blank"呢。

最后写了如下代码:

JavaScript代码
  1. var aTag = document.getElementsByTagName('a');  
  2. for(i in aTag){  
  3.     aTag[i].target='_blank';  
  4. }  

OH YEAH,搞定。

 

Tags: base, target

Mysql分区表局限性总结

昨天晚上asers.z问我怎么样使得数据在搜索的时候和58.com差不多,而且展示数据的速度要快。我一直想着用mysql的分区表解决,而乔楚(乔 大姐)则认为是采用sphinx来解决。
但后来我找了一个资料才发现,原来分区表还是有局限性的,比如他就不支持全文索引。我是看这里看到的。。

» 阅读全文

Tags: mysql, partition

[转]Firefox的优化技巧

这是一些优化firefox的奇技淫巧之一,我也是转载来的。
firefox是我最常用的浏览器(没有之一,最常用的就是它,没有其他的),从开机到关机,浏览器都在运行。除非是addon updater后的重启或者我新装了add-on后的重启,其他时间,就一直开着。
家里的笔记本还好,4G内存,随便我挥霍,单位只有2G,经常会发现FF占了4~500M左右的内存。所以当有个优化技巧在我面前时,我还得选择了尝试。目前尚未看出效果,估计时间还短效果还没有出来。

OK,打开你的Firefox,在地址栏内键入 about:config

XML/HTML代码
  1. 在页面的 filter 栏内输入 network  
  2. 找到network.http.pipelining 这一项,把值设为 True  
  3. 找到network.http.piplining.maxrequest这一项,把值改为10。  
  4.   
  5. 这是因为很多浏览器的默认设置都是依照拨号上网的情况来设置的,所以在现在的宽带时代,它们的潜力并没有被挖掘出来  
XML/HTML代码
  1. 查找 browser.cache.disk.parent_directory  
  2. 如果没有找到 browser.cache.disk.parent_directory ,则新建这个“字符串”  
  3. 修改到你需要存放的位置,例如我修改到RamDisk位置 x:\firefox  
  4. 在地址栏输入 about:cache ,可以发现Cache位置已经成功修改  
XML/HTML代码
  1. 查找 config.trim_on_minimize  
  2. 如果没有找到 config.trim_on_minimize ,则新建这个“布尔”  
  3. 设置为true——好处:在最小化时自动释放内存  
XML/HTML代码
  1. 查找 browser.cache.memory.capacity  
  2. 如果没有找到 browser.cache.memory.capacity ,则新建这个“整数”  
  3. 设置为固定值16384——好处:据说是最优化的大小  
XML/HTML代码
  1. 查 找 browser.sessionhistory.max_total_viewers 
  2. 如 果没有找到 browser.sessionhistory.max_total_viewers ,则新建这个“整数”  
  3. 设置为固定值5或者更小 ——好处:页面快进/快退功能中保存的页面总数,默 认是-1(无限)
XML/HTML代码
  1. 查 找 network.prefetch-next 
  2. 如 果没有找到 network.prefetch-next ,则新建这个“布尔”  
  3. 设置为固定值false——好处:关闭预读取网页的功能

转帖的来源:

http://blog.sunshow.net/2007/02/%E8%BD%AC%E8%BD%BD%E4%BC%98%E5%8C%96firefox%E7%9A%84%E6%96%B9%E6%B3%95/

http://blog.sunshow.net/2006/12/%E8%BD%AC%E8%BD%BD%E8%AE%A9%E4%BD%A0%E7%9A%84firefox%E5%92%8Cie%E8%B7%91%E7%9A%84%E6%9B%B4%E5%BF%AB/

Tags: firefox, 优化

setInterval和setTimeout到底有啥区别?

对于javascript的setInterval和setTimeout,很多人到现在一直搞不清楚。其实,真的很简单,也很方便的就能让人搞清楚在什么时候用什么函数。

当然我说的是简单的方法,请打开词霸,查看interval和timeout,就可以明白很多了

interval: n. 间隔;幕间休息;间距

timeout: n. 暂时休息;工间休息;超时

看到这两个意思,估计你也可以明白,setTimeout是在超过你定义的时间后,执行。而setInterval是间隔你定义时间区间执行函数。这样解释就让你明白很多了吧?

以前写的:

之所以写这篇文章,主要是因为看了http://www.phpweblog.net/jig68/archive/2010/03/17/7137.html这篇博客。才明白还是有很多人不太了解这方面,所以,换个简单的解释方法,总可以让人明白了吧?
PS:意外啊,一不小心多复制了点代码。。。

Tags: setinterval, settimeout

Javascript:不要将属性写在prototype里

没有仔细研究过,但觉得得这就象PHP的类(Class)的复制和引用的关系。好象差不多。

原文来自:http://www.beiju123.cn/blog/?p=304

年前,某次分享会上听玉伯偶然说了这句话,当时糊里糊涂,不明所以,偶然有一天我做一个东西,发现某个对象的实例之间竟然会互相操作了定义在 prototype里的属性,于是我验证了下:

JavaScript代码
  1. var objA=function(){  
  2.   
  3. }  
  4. objA.prototype={  
  5.     name:{},  
  6.     setName:function(str){  
  7.         this.name=str;  
  8.     },  
  9.     getName:function(){  
  10.         return this.name;  
  11.     }  
  12. }  
  13. var a=new objA();  
  14.   
  15. var b=new objA();  
  16. //a.name={firstname:"孙",fathername:"信宇"};//undefined  
  17. a.name.firstname="孙";//弹出sun  
  18. alert(b.name.firstname);  

在这个例子里,当我修改实例a的name属性的时候,实例b的name属性页跟着变了,而且说明他们引用了同一份对象.

如果name属性是值类型,例如字符串,就不会与这种问题了,那是因为字符串每次被操作都返回新实例,当然反映不出冲突来了.
那为什么会出现这种冲突呢?
专业术语我不太会讲,但是prototype这种原型继承的好处其实就是节省程序运行空间,当你从objA实例化两个实例:a和b时,并不会创建两份属性 和方法,而是把他们都指向一份属性和方法,所以prototype里的所有的东西都被所有的实例共享,实例中保存的只是一个json索引.
正因为如此,如果整个改变name的值的话,让他指向别的对象,这样就不会互相影响了,而且对于值类型来说,本质就是每次操作都会返回新的实例,所以不会 出现冲突.
对于这种冲突来说,最好的解决办法就是将属性从prototype里移出来,写在构造函数里:

JavaScript代码
  1. var objA=function(){  
  2.     this.name={}  
  3. }  
  4. objA.prototype={  
  5.     setName:function(str){  
  6.         this.name=str;  
  7.     },  
  8.     getName:function(){  
  9.         return this.name;  
  10.     }  
  11. }  

这样再试一次就会发现,每次创建实例都会创建一个新的name属性对象,而不是指向同一个对象;
也可以在prototype理的init方法里用this.name={}来初始化配置参数,属性等内容,反正就是不能写在prototype里面.但是 可以在函数里初始化定义.

还有一点要注意:我个人认为,js里所有的东西都是对象,包括值类型,他们之所以表现出非引用类型的性质,是因为每次对这些对象操作都会返回新的实 例,这只是一种假象,事实上可以说,js里所有的东西都是引用类型,只是值类型在被操作时引用总是被改变,表面上来看就是非引用类型了.

--EOF--

即使是上面的情况,我还是认为可以看看

http://lifesinger.org/blog/2009/01/javascript-run-mechanism/

http://www.cnblogs.com/rainman/archive/2009/04/28/1445687.html