我尝试了一个简单的例子(FIDDLE)。与此示例类似,我有一些代码需要在选项卡/窗口聚焦时执行(但只有一次)。
jQuery(window).focus(function(){
alert();
});
为什么焦点事件伴随无限递归。当我在firefox中尝试时,它一直显示警告,直到firefox给了我一个"过多的递归" 错误并且突然出现了递归。
答案 0 :(得分:3)
每次页面聚焦时,您的代码所说的内容都会显示一条警报,该警报本身会导致页面再次聚焦。
为了澄清焦点功能实际上是在整个窗口上创建一个事件处理程序,当窗口被聚焦时它将被调用,它不会告诉浏览器关注窗口。
如此专注 - >提醒 - >焦点 - >提醒 - >焦点........到无穷大==="过多的递归"
答案 1 :(得分:1)
尝试这样的事情:
var pictureList = [
"http://lorempixel.com/400/200/sports/1",
"http://lorempixel.com/400/200/sports/2",
"http://lorempixel.com/400/200/sports/3",
"http://lorempixel.com/400/200/sports/4",
"http://lorempixel.com/400/200/sports/5", ];
$('#picDD').change(function () {
var val = parseInt($('#picDD').val());
$('img').attr("src",pictureList[val]);
});