Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 输入字段中的$timeout和backspace导致加载上一页:Firefox_Javascript_Angularjs_Firefox - Fatal编程技术网

Javascript 输入字段中的$timeout和backspace导致加载上一页:Firefox

Javascript 输入字段中的$timeout和backspace导致加载上一页:Firefox,javascript,angularjs,firefox,Javascript,Angularjs,Firefox,我有一个角度指令,它是从模板加载的。该指令有一个文本框,在页面上呈现该指令后,我通过编程将焦点设置为该文本框。为此,我使用$timeout,以便在渲染后设置焦点,如下所示: $timeout(function() { $element[0].focus(); }); 现在,用户键入一些内容,并使用退格一次删除一个字符。UI当前的工作方式是,当用户查询为0个字符时,将导致状态重新加载,因此整个页面将与指令一起再次加载 因此,有时,当用户按backspace键足够长的时间并删除所有字

我有一个角度指令,它是从模板加载的。该指令有一个文本框,在页面上呈现该指令后,我通过编程将焦点设置为该文本框。为此,我使用$timeout,以便在渲染后设置焦点,如下所示:

$timeout(function() {
      $element[0].focus();
 });
现在,用户键入一些内容,并使用退格一次删除一个字符。UI当前的工作方式是,当用户查询为0个字符时,将导致状态重新加载,因此整个页面将与指令一起再次加载

因此,有时,当用户按backspace键足够长的时间并删除所有字符时,浏览器返回功能将启动(因为页面已加载,指令模板已重新加载,但尚未在输入元素上设置编程焦点)。用户看不到这种非焦点,但会导致不稳定的行为

实现这一点的一种方法是以某种方式不重新加载0个字符的页面,在本例中,该字符用于清理和重新初始化。 但我正在寻找一些替代方案,这也是浏览器的正确行为吗

这是相关的指令模板:

 <input type="text"
              autocomplete="off"
              autocapitalize="off"
              spellcheck="false"
              ng-click="Click()"
              autofocus>
实际上,我看到的是这样一种行为:

$timeout(function() {
     $element[0].focus();
},100);

也就是说,如果元素在100毫秒后聚焦,那么在这100毫秒内,用户实际上可能会按backspace键并触发浏览器返回功能,因为输入元素没有聚焦,但是当超时延迟为0时,我不希望发生这种情况(我会这样做,因为0实际上不是0,但理想情况下不是).

也许类似的东西可以帮助您——是的,这可能有助于防止浏览器返回行为,但这不是我真正想做的。我想允许用户退格到上一页,这是默认行为,除非我有充分的理由阻止这样做
$timeout(function() {
     $element[0].focus();
},100);