分类: 写写代码

  • now we have two problems

    翻了下别人推荐的一个正则网站 Regexper,看到有个副标题:You thought you only had two problems… 对这句话很是好奇。

    很是 google 一番后,终于找到了出处:Some people, when confronted with a problem, think “I know, I’ll use regular expressions.” Now they have two problems. —Jamie Zawinski

    顿时泪流满面。

    正则的恐怖在于写完后再看发现完全看不懂了,这就更加不用说去看别人的了,比如这个验证 email 的,看到时已经风中凌乱了。

  • IE10 对 frameset 的支持存在问题

    今天又被 IE 坑了,而且还是 IE10。

    有一个页面用 frameset 嵌了两个页面,然后通过改变 frameset 的 cols 来调整布局。别的浏览器安好,但 IE10 却没任何的反应。不是报错,值也确实地改变了,但布局没发生变化,当浏览器窗口大小发生变化时才会触发布局变更。示例代码如下(也可直接查看 Demo):

    (更多…)

  • 解除Chrome字体最小12px的限制

    Chrome 限制了最小字体是 12px,虽然一般情况下,比这还小的字体将会无法清晰查看,但非得设时,可以使用以下代码来解除限制。

    html{-webkit-text-size-adjust:none;}
    

    学自 chrome下最小12px字体的解决方法

    P.S. airyland 提醒:不建议用这个属性来支持小字体,这样会使页面缩放时其他元素缩放了,而字体还是一样大小。

    P.S. 非要用的时候,把选择符精确定位至小于 12px 的元素上,不用 html,减少影响范围。

    2013/06/26

    Chrome 里可以设置字体大小的下限,默认是 12,最小可以去到 6,最大可以去到 24,但问题是,不可能要求浏览者修改浏览器的设置。所以最好的方法还是:尽可能不要设计小于 12 的字,如果有,那应是不可变的(这样可用图片)。

    Chrome 27 后取消了上面的技巧,所以非得要做的话可以用 -webkit-transform{scale(0.85) translate(-1px, 1px)} 这样的方式。scale 来做缩放,缩放产生了位移,再加上 translate 来平移调整。

  • IE把name也归入hash索引

    一般地,我们在对应元素处加上个 id ,然后 url 中使用 #id 这样的 hash 来达到直接跳转到对应元素的目的。

    但在 ie 中,可能会存在一些问题,因为 ie 会把 form 表单的 name 属性也纳入页内跳转的查找范围。这样,如果存在着 name 值和别的元素的 id 的值相同,那么可能将会跳转到对应 name 属性的 form 元素上而不是用 id 指定的元素。

    至于,最终跳转到哪个,则看哪个的位置更前。

  • JavaScript中的array.sort的一些注意事项

    JavaScript 中,array.sort([compareFunction]) 在不指定比较函数的情况下,将会使用默认的比较函数,而这个比较函数是根据字母表数序来比较的。简单来说,先把数组中的各项转化为 string,然后再进行比较。

    这意味着对于数字的排序,必须写比较函数而不能用默认的,否则,将会导致类似 [1, 10, 11, 2, 3] 这样的排序结果。

    自然地,true, false, null 等也被先转为对应的字符串再进行比较,但 undefined 有点特殊,JavaScrip 1.2 后会把其放到数组的最后面。

    (更多…)

  • 使用 pac 文件来实现自动代理

    pac(proxy autoconfiguration)文件其实就是一个 JavaScript 文件,文件扩展名是什么其实没有关系,但一般都名为 pac

    pac 文件中必须包含 FindProxyForURL(url, host) 的函数,支持 pac 自动代理的浏览器将会根据这个函数来判断当前访问的网址走何种通道。最简单的示例如下

    function FindProxyForURL(url, host) {
        return 'DIRECT';
    }
    

    上面那段代码说明对于所有 url,都直连,不走任何代理。

    FindProxyForURL 函数除了可以返回 “DIRECT” 外,还可以返回指定类型、主机和端口的代理。如:

    // 本地 3721 端口的 http 代理
    "PROXY 127.0.0.1:3721"
    
    // 本地 8080 端口的 socks5 代理
    "SOCKS5 127.0.0.1:8080"
    

    可以同时指定多个方式,从第一种开始,一种无法连接使用下一种,直到成功或最后失败,如:

    return "PROXY 127.0.0.1:3721; SOCKS5 127.0.0.1:8080; DIRECT";
    

    (更多…)

  • innerHTML设置样式在IE下的问题

    使用 innerHTML 设置内容时,如果内含 style 样式,在 IE7 及以下可能会发现样式没生效。

    解决方法:把 <style> 样式放到待设置的 html 内容的最后。

    所使用的代码片段是:

    var str1 = '<style>#con{color:red;}</style><p>红字</p>',
        str2 = '<p>二:<style>#con{color:green;}</style>绿字</p>',
        str3 = '<p>蓝字</p><style>#con{color:blue;}</style>';
    
  • IE9 下 jQuery 报 getElementsByTagName 不支持问题

    在 IE9 下使用 jQuery 1.5 或更前的某些版本,可能会碰到类似这样的报错:

     "Object doesn't support this property or method..." for code elem.getElementsByTag("*")
    

    debug 将会发现,那个时候 elem 元素会是 DocumentFragMent,而在 IE9 中没对这个元素提供 getElementsByTagName 这个方法。

    解决方法则很简单,把 jQuery 的版本升级上去即可。

    参考链接

  • jQuery easing 效果展示

    展示 jquery 1.5 内置及 jQuery Easing 1.3 的缓动算法的效果。

    详细参考 DEMO 页面

  • Image 的 complete 属性

    判断图片是否已加载完,是则返回 true,否则返回 false。

    所有主流浏览器均支持该属性。

    Image complete Property