JavaScript setInterval 和 ‘this’ 的解决方案

By default, setInterval中的this 是被绑定到global context, 如果你想绑定到current context, 有如下几种解决方案:

(本文来自于stackoverflow: https://stackoverflow.com/questions/2749244/javascript-setinterval-and-this-solution)

Code:

prefs: null,
startup : function()
{
// init prefs
...
this.retrieve_rate();
this.intervalID = setInterval(this.retrieve_rate, this.INTERVAL);
}

如果我们想在setInterval里面access this,可以:

  1. 使用.bind
this.intervalID = setInterval(this.retrieve_rate.bind(this), this.INTERVAL);

2. 在函数外,把this 赋值给其他变量,常见是that 和 self

var self = this;
this.intervalID = setInterval(
function() { self.retrieve_rate(); },
this.INTERVAL);

3. 使用arrow function, 箭头函数

startup : function()
{
// init prefs
...
this.retrieve_rate();
this.intervalID = setInterval( () => this.retrieve_rate(), this.INTERVAL);
}

mobile traffic detection

这个应该算是老生常谈的问题了,再web design 上早就使用responsive design 来解决了,但是在在线广告领域,除了google 早早就开始使用自适应广告以外,其余的广告还是需要自己去判断的。

这里有两个类可以使用,但是我个人更加偏向于第一个

http://mobiledetect.net/

http://detectmobilebrowsers.com/

在landing page上增加audio

一般人的解决方案是用niftyplayer 来增加audio,但是我个人可能会更加喜欢yahoo media 的解决方案。 Anyway,众口相传的解决方案确实是有道理的

使用办法:

  1. 下载niftyplayer: niftyplayer
  2. 把下列代码加入你的LP当中

<object classid=”clsid:D27CDB6E-AE6D-11cf-96B8-444553540000″ codebase=”http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0″ width=”165″ height=”38″ id=”niftyPlayer1″ align=””>
<param name=movie value=”niftyplayer.swf?file=betty.mp3&as=1″>
<param name=quality value=high>
<param name=bgcolor value=#FFFFFF>
<embed src=”niftyplayer.swf?file=betty.mp3&as=1” quality=high bgcolor=#FFFFFF width=”165″ height=”38″ name=”niftyPlayer1″ align=”” type=”application/x-shockwave-flash” pluginspage=”http://www.macromedia.com/go/getflashplayer”>
</embed>
</object>

注意字体为红色的地方,是你需要修改的

把betty.mp3改为你的mp3的文件

as = 1 表示自动播放,0表示不是自动播放

 

Javascript 中需要转义的字符

最近需要coding的程序跨越了太多了语言。。。总是弄混了,今天把 javascript 中需要转义的字符列出来,做个记录,以后也方便了。

注释 $ 匹配输入字符串结尾的位置。如果设置了 RegExp 对象的 Multiline 属性,那么 $ 还匹配 \n 或 \r 前面的位置。若要匹配 $ 字符本身,请使用 \$。

( ) 标记子表达式的开始和结束。可以捕获子表达式以供以后使用。若要匹配这两个字符,请使用 \( 和 \)。

* 零次或多次匹配前面的字符或子表达式。若要匹配 * 字符,请使用 \*。

+ 一次或多次匹配前面的字符或子表达式。若要匹配 + 字符,请使用 \+。

. 匹配除换行符 \n 之外的任何单个字符。若要匹配 .,请使用 \。 [ ] 标记中括号表达式的开始。若要匹配这些字符,请使用 \[ 和 \]。

? 零次或一次匹配前面的字符或子表达式,或指示“非贪心”限定符。若要匹配 ? 字符,请使用 \?。

\ 将下一字符标记为特殊字符、文本、反向引用或八进制转义符。例如,字符 n 匹配字符 n。\n 匹配换行符。序列 \\ 匹配 \,序列 \( 匹配 (。

/ 表示文本正则表达式的开始或结束。若要匹配 / 字符,请使用 \/。

^ 匹配输入字符串开始处的位置,但在中括号表达式中使用的情况除外,在那种情况下它对字符集求反。若要匹配 ^ 字符本身,请使用 \^。

{ } 标记限定符表达式的开始。若要匹配这些字符,请使用 \{ 和 \}。

| 指出在两个项之间进行选择。若要匹配 | ,请使用 \|