1

わかりました、私はこれを解決するのに問題があります。私は php / C# Web 開発者であり、Javascript の経験も知識もありません。Javascript が必要な次のことを 1 つだけ実行する必要があります。

特定のページが読み込まれると、カウンターが開始されます。クライアントはこのページに 20 秒間留まる必要があります。あと、phpコードを実行したい。

したがって、最初に私に関する2つの問題があります。クライアントがページを離れた場合(ページがフォーカスされていないことを意味します)、カウンターを停止するにはどうすればよいですか。

2) javascript で php を実行するにはどうすればよいですか? 、または Javascript から php 関数を呼び出します。

私がこれまでに持っているコードは次のとおりです。

<html>
<head>
</head>

<body>
<div id='timer'>
<script type="text/javascript">

COUNTER_START = 20

function tick () {
    if (document.getElementById ('counter').firstChild.data > 0) {
        document.getElementById ('counter').firstChild.data = document.getElementById ('counter').firstChild.data - 1
        setTimeout ('tick()', 1000)
    } else {
        document.getElementById ('counter').firstChild.data = 'done'
    }
}

if (document.getElementById) onload = function () {
    var t = document.createTextNode (COUNTER_START)
    var p = document.createElement ('P')
    p.appendChild (t)
    p.setAttribute ('id', 'counter')

    var body = document.getElementsByTagName ('BODY')[0]
    var firstChild = body.getElementsByTagName ('*')[0]

    body.insertBefore (p, firstChild)
    tick()
}

</script>
</div>
</body>
</html>

また、クライアントがページに戻ったときにタイマーの刻みを開始したい

事前に助けてくれてありがとう

4

2 に答える 2

4

jQuery を使用してこれを行うことができます。
古い Stackoverflow の投稿をリサイクルするには、これを試してください。

var window_focus;
var counter = 1000;

// on focus, set window_focus = true.
$(window).focus(function() {
    window_focus = true;
});

// when the window loses focus, set window_focus to false
$(window).focusout(function() {
    window_focus = false;
});

// this is set to the ('click' function, but you could start the interval/timer in a jQuery.ready function: http://api.jquery.com/ready/
$(document).one('click',function() {
    // Run this function every second. Decrement counter if window_focus is true.
    setInterval(function() {
        $('body').append('Count: ' + counter + '<br>');
        if(window_focus) { counter = counter-1; }
    }, 1000);
});

デモと古い投稿
DEMO | オールド・ソー・ポスト

更新
おそらく、デモが 4 つの iframe で実行されるため、$(window).focus ビットは、実際にコードを実行している iframe (右下のウィンドウ) でのみ機能します。

jQuery
jQuery.com (jQuery のしくみ) | 例 (ページの途中で基本に戻る) | 2番目のリンクを使用する場合は、これもお読みください

于 2012-09-21T19:07:59.510 に答える
1

ウィンドウの焦点が合っていないかどうかの検出に関する最初の質問については、次の回答を参照してください: Is there a way to detect if a browser window is not currently active?

可能ですが、これをサポートするのは非常に新しいブラウザーのみであるため、現在のブラウザーのサポートに基づいて役に立たない可能性があります。

JavaScript から PHP コードをトリガーするには、JS がクライアント側で PHP がサーバー側であるため、サーバー側の PHP スクリプトに AJAX 呼び出しを行って PHP を呼び出す必要があります。

于 2012-09-21T19:09:22.197 に答える