2016-11-08 2 views
0

Meine Homepage hat einen Code wie unten. Ich habe eine Javascript-Funktion onpage load aufgerufen. In dieser Blinkfunktion blinkt der Eingabetext in dem bestimmten Zeitintervall.Seite Nach oben scrollen, wenn Sie mit der Maus auf eine beliebige Stelle im Körper klicken

<body onload="blink()";/> 
<form> 
    <input autocomplete="off" onkeydown="if (this.value=='xxx xxx xxx ?') this.value='';StopBlinking();" type="text" class="search_input" name="searchword" id="searchword" onKeyup="request(event);" value="xxx xxx xxx ?" onclick="if (this.value=='xxx xxx xxx ?') this.value='';StopBlinking();" onfocus="if (this.value=='xxx xxx xxx ?') this.value='';StopBlinking();" onblur="if (this.value=='') this.value='xxx xxx xxx ?';"/> 
    <div class="clicked-area"> 
    ....Did something..... 
    </div> 
    </form> 

</body> 

<script> 
function blink() { 
    document.getElementById("searchword").focus(); 

    if(document.getElementById("searchword").value == "XXX XXX XXX XXX") 
    { 
     document.getElementById("searchword").value = ""; 
    } else if(document.getElementById("searchword").value == ""){ 
     document.getElementById("searchword").value = "XXX XXX XXX XXX"; 
    } 

    timer = setTimeout("blink()", 500); 
} 

function StopBlinking() 
{ 
    clearTimeout(timer); 
} 

</script> 

Auf dieser Seite, wenn haben überall auf der div"clicked-area" unerwartet meine Seite scrollt nach oben angeklickt.

Aber wenn ich Timeout-Methode aus dem Skript "timer = setTimeout("blink()", 500);", entfernen, dann passiert es nicht. Kann mir jemand helfen, dieses Problem zu lösen?

+0

Warum 'blink()' im Anführungszeichen? 'setTimeout (" blink() ", 500);'. Und welche Browser haben dieses Problem? – vothaison

+0

Hai Vothaison. Alle Browser haben dieses Problem. –

Antwort

0

Warum möchten Sie die Blinkfunktion zuerst entfernen? Wenn Ihr Hauptziel ist es, die gerade Seite oben zu bewegen, wenn sie angeklickt-Bereich ist klicken Sie können nur die Funktion auf geklickt-Bereich bewegen, wenn Sie auf

<div class="clicked-area" onclick="blink()"> 



function blink() { 
document.getElementById("searchword").focus(); 
} 
0

Ich denke, es ist normal. Wenn eine Eingabe mithilfe eines Skripts fokussiert wird, muss die gesamte Seite zur Position der Eingabe blättern.

Sie klicken irgendwo außerhalb der Eingabe, Sie verlieren Fokus. Dann läuft wieder blink() und der Eingang wird "neu fokussiert". Die gesamte Seite scrollt dann nach oben (da die Eingabe oben ist).

Wenn Sie versuchen, eine Reihe von br-Tags zwischen dem Eingang und der angeklickt-Bereich div setzen, so dass Seite länger ist, werden Sie den Effekt deutlicher zu sehen.

Muss der Eingang ständig fokussiert sein?

+0

Danke vothaison. Sie haben Recht, aber wir müssen das Eingabefeld immer fokussieren. –

Verwandte Themen