更改背景图像时,将键盘焦点保留在文本字段上

时间:2017-07-02 14:29:52

标签: javascript html css background-image

我正在使用以下代码更改登陆屏幕的背景图像。

window.onload = function() {
setTimeout(changeBackground, 1000);
};
var currentBackground = 0;
var backgrounds = [];
backgrounds[0] = '<?php echo base_url(); ?>images/background.png';
backgrounds[1] = '<?php echo base_url(); ?>images/background2.png';
backgrounds[2] = '<?php echo base_url(); ?>images/background3.png';
backgrounds[3] = '<?php echo base_url(); ?>images/background4.png';
function changeBackground() {
    currentBackground++;
    if(currentBackground > 3) currentBackground = 0;

    $('body').fadeOut(0, function() {
        $('body').css({
            'background-image' : "url('" + backgrounds[currentBackground] + "')"
        });
        $('body').fadeIn(0);
    });


    setTimeout(changeBackground, 3000);
}

一切都运作良好。但是,在Internet Explorer中,当我尝试在文本框中输入用户名时,当它更改背景图像时,文本字段内的焦点会丢失,我需要在每次更改背景图像时单击。

任何人都可以指导如何克服这一点。

1 个答案:

答案 0 :(得分:1)

您可以通过每次背景更改时显式设置焦点来克服此问题。将以下行添加到changeBackground()函数中(可能应该是最后一行......):

document.getElementById("...ID of text box...").focus();

请记住,这可能会导致另一个问题,即在背景改变之前有意改变焦点。如果这是可能的,那么你真正想要做的是检测哪个元素在背景改变时具有焦点,保留它,而不是明确地将它设置为该元素。这是使用document.activeElement命令完成的。