1. Firefox中“max-width:100%”不兼容问题

    这个博客是基于“Pelican + Markdown + 定制的my-gum主题”的。定制的主题将博文正文页面的 右边栏去掉,这导致在Firefox等浏览器中,正文中大的图片会突破正文块的宽度,高度也得不到限制,显示效果非常差。

    其原因是:Markdown的图片区块元素![Alt text](/path/to/img.jpg)渲染成HTML元素的结果为 -

    <p>
        <img src="/path/to/img.jpg" alt="Alt text"></img>
    </p>
    

    <p>元素内的元素是行内(inline)元素。主题my-gum使用的CSS框架gumby对img元素是使用max-width: 100%将图片的最大宽度限制为父元素的宽度。但在Firefox中max-width对于行内元素并不会生效(all elements but non-replaced inline ...

  2. IE下JavaScript Date对象的不同之处

    之前在仓库作业机器监控系统项目中使用HighCharts的时间序列数据图来绘制机器CPU使用率、内存使用量、网络流量趋势变化图等,这些图在IE下却没有正常显示,IE也没有报错,按理说HighCharts的IE兼容性是较好的,不会出现这种问题, 最后查明原因---确实不是HighCharts的问题,而是由于IE下JavaScript的Date对象缺少一种构造函数导致的。

    IE中JavaScript的Date对象有如下三种构造函数

    dateObj = new Date()
    dateObj = new Date(dateVal)
    dateObj = new Date(year, month, date[, hours[, minutes[, seconds[,ms]]]])
    

    其他浏览器中除了这三种之外,还有一种:

    dateObj = new Date(dateString);
    

    如果在IE下使用了这种构造函数,IE不会提示错误,但在调用dateObj的getMonth、getDate等等方法时返回的是NaN,从而导致了其他问题。


    更新

    注:感谢@yiyun指出,IE中的Date构造函数只是不支持"xxxx-xx-xx ...

    Tagged as : JavaScript 笔记
  3. 学习JavaScript - 我的经验与建议(译)

    原文:learning JavaScript - my experience and advice

    译者:youngsterxyf

    自从我曾提到自己在刚过去的几个月中学习了JavaScript,很多人就发email给我询问我是如何学习JavaScript的以及推荐如何学习。以下就是我的经验和最佳建议。

    注:我是想真正地学习JavaScript---不是捷径,或快速技巧,或元工具(meta-tools)之类让我不必要学习JavaScript的东西。我想学习、掌握、阅读、理解以及记住JavaScript这门语言,从而在以后的日子里能够理解所有其他以JavaScript编写的很酷的东西。

    首先---很多人可能会告诉你去阅读Douglas Crockford的著作《JavaScript语言精粹》。但当我开始阅读这本书时,才发现它是如此的紧凑简洁以致我根本不知道它在说啥!

    你知道何时一个专家是在谈论自己的领域,就不知道如何为其他人做点简化么?感觉这本书对于那些已有20年的C、Java或C++编程经验来说非常完美,他们只需要快速概览必知的JavaScript知识点。

    但它真的不是要教你学习JavaScript。它不会指导你学习任何东西。因此我建议先跳过这本书。

    相反,从Marijn Haverbeke的著作《JavaScript编程精解》开始学习吧。

    这本书一开始非常简单易学,简直是太简单了 ...

    Tagged as : JavaScript 翻译
  4. 读书笔记:JavaScript语言精粹

    第2章:语法

    JavaScript提供两种注释形式,一种是用/* */包围的注释块,另一种是以//为开头的行注释。 建议避免使用/* */,而用//注释代替它。


    标识符由一个字母开头,其后可选择性地加上一个或多个字母、数字或下划线。


    JavaScript只有一个数字类型。它在内部被表示为64位的浮点数。与其他大多数编程语言不同的是,它没有分离出整数类型,所以1和1.0的值相同。

    如果一个数字字面量有指数部分,那么这个字面量的值等于e之前的数字与10的e之后数字的次方相乘。

    NaN是一个数值,它表示一个不能产生正常结果的运算结果。NaN不等于任何值,包括它自己。可以用函数isNaN(number)检测NaN.

    Infinity表示所有大于1.79769313486231570e+308的值。

    JavaScript有一个对象Math,它包含一套作用于数字的方法。


    字符串字面量可以被包在一对单引号或双引号中,它可能包含0个或多个字符。\(反斜杠)是转义字符。JavaScript中的所有字符都是16位的。

    JavaScript没有字符类型。要表示一个字符,只需创建仅包含一个字符的字符串即可。

    字符串是不可变的。一旦字符串被创建,就永远无法改变它。但可以通过+运算符连接其他字符串来创建一个新字符串。两个包含着完全相同的字符且字符顺序也相同的字符串被认为是相同(===)的字符串。


    一个编译单元包含一组可执行的语句。在Web浏览器中 ...

    Tagged as : 笔记 JavaScript
  5. JavaScript初学者应知的24条最佳实践(译)

    原文:24 JavaScript Best Practices for Beginners

    译者:youngsterxyf

    (注:阅读原文的时候没有注意发布日期,觉得不错就翻译了,翻译到JSON.parse那一节觉得有点不对路才发现是2009年发布的文章,不过还是不错的啦。另外,文章虽说24条最佳实践,其实只有23条,不知道原作者怎么漏了一条。)

    1.优先使用===,而不是==

    JavaScript使用两种相等性操作符:===|!==和==|!=。通常认为做比较的最佳实践是使用前一组操作符。

    "若两个操作数的类型和值相同,那么===比较的结果为真,!==比较的结果为假。" --- JavaScript语言精粹(JavaScript: The Good Parts)

    然而,如果使用==和!=,当比较不同类型的操作数时,你就会碰到问题啦。在这种情况下,这组操作符会尝试对操作数的值做无用的强制转换。

    2.Eval就是糟糕的代名词

    对于那些不熟悉JavaScript的人来说,函数"evel"让我们能够访问JavaScript编译器。我们可以通过给"eval"传递一个字符串参数来得到该字符串执行的结果 ...

    Tagged as : JavaScript 翻译
  6. JavaScript:继承和原型链(译)

    原文:Inheritance and the prototype chain

    译者:youngsterxyf

    对于具备基于类的编程语言(如Java或C++)经验的程序员来说,JavaScript有点混乱,因为它是一种动态语言,并且不提供class的实现(虽然关键字class是保留的,不可用作变量名)。

    说到继承,JavaScript只有一种结构:对象。每个对象都有一个内部链接指向另一个对象,这个对象称为原型 (prototype)。那个原型对象也有自己的原型,如此直到某个对象以null作为其原型。null,根据定义,没有原型,作为这种原型链的最后一环而存在。

    以原型链实现继承

    继承属性

    JavaScript对象可看作是动态地装载属性(这里指自有属性)的"包包",并且每个对象都有一个链指向一个原型对象。如下即为当尝试访问一个属性时发生的事情:

    // 假设有个对象o,其原型链如下所示:
    // {a: 1 ...
    Tagged as : JavaScript 翻译

Page 1 / 1