2017-07-02 56 views
0

我正在使用以下代码更改着陆屏幕的背景图像。在更改背景图像时保留键盘焦点在文本字段

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

您可能可以通过每次背景更改时明确设置焦点来克服此问题。以下行添加到您的changeBackground()功能(或许应该是最后一行...):

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

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

+0

谢谢你的评论,将尝试和恢复! – rafavinu

+0

嗨,我试过,并得到了在所有其他浏览器,但IE的工作,stragely这不工作与IE – rafavinu

+0

奇怪。你使用什么版本的IE? – JBH

相关问题