Javascript Onfocus滚动到Anchor=失去焦点。还原焦点=无限循环

Javascript Onfocus滚动到Anchor=失去焦点。还原焦点=无限循环,javascript,window.location,onfocus,Javascript,Window.location,Onfocus,我有一个文本字段,当用户输入div时,它会更新div的内容。我在小屏幕上的用户有时会滚动通过div,屏幕上只有输入。所以他们不知道他们的打字有什么作用 因此,我编写了下面的Javascript函数,使两个元素同时出现在屏幕上。输入中的onfocus事件向上滚动浏览器窗口以显示div 但这会导致输入失去焦点。因此,我在函数中添加了this.focus()。它将焦点返回到输入 但此事件再次触发该函数,从而创建一个超过最大调用堆栈大小的无限循环 我如何解决这个问题,以确保这两个元素同时出现在屏幕上,而

我有一个文本字段,当用户输入div时,它会更新div的内容。我在小屏幕上的用户有时会滚动通过div,屏幕上只有输入。所以他们不知道他们的打字有什么作用

因此,我编写了下面的Javascript函数,使两个元素同时出现在屏幕上。输入中的
onfocus
事件向上滚动浏览器窗口以显示div

但这会导致输入失去焦点。因此,我在函数中添加了
this.focus()
。它将焦点返回到输入

但此事件再次触发该函数,从而创建一个超过最大调用堆栈大小的无限循环

我如何解决这个问题,以确保这两个元素同时出现在屏幕上,而不会在输入中失去焦点,并避免无限循环

(函数(){
document.getElementById('edit_here')。onkeyup=function(){
var result=document.getElementById('edit_here')。值;
document.getElementById('result_here')。innerHTML=result;
}
document.getElementById('edit_here')。onfocus=function(){
location.href='#结果_此处';
这是focus();
}
}());
结果
向下滚动直到不可见为止。然后在字段中键入。
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
我想您已经验证了元素是否聚焦。如果它在焦点中,你不需要
这个.focus
。 因此:

document.getElementById('edit_here').onfocus = function(){
    if(  this === document.activeElement )
     return;
   else {
     this.focus();  
     location.href = '#result_here';
  }
}