0

次のようなスクリプトがあります。

<script language="JavaScript" type="text/javascript">

    function enter() {
        this.chrono = new Date().getMilliseconds();
    }

    function leave() {
        this.chrono = new Date().getMilliseconds() - this.chrono;

        alert("test" + this.chrono);

            var blockingRequest = new XMLHttpRequest();
            blockingRequest.open("GET", "visitor_log/ajax_store_visit_duration.php?visit_duration=" + this.chrono, false); // async = false
            blockingRequest.send();

        return null;
    }

    window.onload = enter;
    window.onbeforeunload = leave;
</script>

PHP 部分 (visitor_log/ajax_store_visit_duration.php ファイル):

<?php

if(isset($_GET["visit_duration"]))
{
    $text = $_GET["visit_duration"];

    logtxt($text);

    echo "OK";
}
else die("application error");

function logtxt($text)
{
    $myFile = "test.txt";
    $fh = fopen($myFile, 'wb');
    fwrite($fh, $text);
    fclose($fh);
}

?>

Chrome では問題なく動作しますが、Opera では動作しません。

クロスブラウザにする方法は?

4

1 に答える 1

0

どこでも機能しないはずです。getMilliseconds()最終的なミリ秒値ではなく、日付オブジェクトのミリ秒部分を返します。値は常に 1000 未満です。マグニチュードの比較には役立ちません。あなたが本当に欲しいのは世界時です。

(new Date()).valueOf()あなたが扱うことができる値を取得する必要があります。

何が機能していないかを実際に指定していないため、これは部分的な答えかもしれません。

于 2013-08-02T17:59:17.313 に答える