0

JavaScriptのタイミングに問題があります。基本的に、フォーカスが外れたときにタイミングを開始し、フォーカスに戻ったときにタイミングが停止して表示されます。

var start,end,isTimerOn=0;
window.addEventListener('blur', function() { //when user get out of the screen
/*Start Time when user goes out of focus*/
start = new Date().getTime();
});
window.addEventListener('focus', function() { //when user focus on the screen
if (isTimerOn==1)
{
    end = new Date().getTime();
    var time = end - start; //time will be in ms. eg: 1 sec will be 1000

    /*Convert to seconds*/
    var y=Math.round(time/1000);

    start=0; //reset
    isTimerOn=0; //reset
    alert('Execution time: ' + y  + 'secs'); //this will print the time how long the user has been away

}
});

これで、isTimerOn変数は、次の場合に設定されるフラグになります。

function ProcessThisSearch(form)
{
    //alert("OI!"); //test is js is working.
    var test=form.search.value;
    //alert(test); //test if value can be retrieved
    if (test)
    {
        isTimerOn=1;
        window.open('http://www.'+test+'.com');
    }

}

この関数ProcessThisSearch(form)は、次のHTMLフォームで呼び出されます。

<form align=right action="mainheader.jsp" method="POST"><input type="text" name="search"><input type="submit" value="Open Website" onClick="ProcessThisSearch(this.form)"></form>

問題はisTimerOn変数にあると思います。2つのイベントリスナーをテストし、機能しているためです。isTimerOn変数を追加した場合にのみ、機能しないようです。

4

1 に答える 1

2

HTMLコードは、フォームの送信時にのみisTimerOn=trueを設定します。おそらくこれはあなたが望むものではありません。

フォームを送信すると、現在のページがmainheader.jspに変更され、ProcessThisSearch関数によって別のページが読み込まれます。

可能な修正は次のとおりです。

<button onClick="ProcessThisSearch(this.form)">Open Website</button>

また

<form align=right action="mainheader.jsp" method="POST"><input type="text" name="search"><input type="submit" value="Open Website" onClick="ProcessThisSearch(this.form);return false;"></form>

于 2012-10-25T13:05:36.713 に答える