0

設定された時間の後に表示される中央のポップアップを取得しようとすると、次のようになります。

<script type="text/javascript">
    <!--
    function popup(url) {
    var width = 300;
    var height = 200;
    var left = (screen.width - width) / 2;
    var top = (screen.height - height) / 2;
    var params = 'width=' + width + ', height=' + height;
    params += ', top=' + top + ', left=' + left;
    params += ', directories=no';
    params += ', location=no';
    params += ', menubar=no';
    params += ', resizable=no';
    params += ', scrollbars=no';
    params += ', status=no';
    params += ', toolbar=no';
    newwin = window.open(url, 'windowname5', params);
    if (window.focus) {
        newwin.focus()
    }
    setTimeout(popup('`test/login.html'), 5000);
    return false;
}

//-->
//]]>
</script>

ただし、ポップアップは表示されません。私がこのように書くと:

    <script type="text/javascript">
        <!--
        function popup(url) {
            var width = 300;
            var height = 200;
            var left = (screen.width - width) / 2;
            var top = (screen.height - height) / 2;
            var params = 'width=' + width + ', height=' + height;
            params += ', top=' + top + ', left=' + left;
            params += ', directories=no';
            params += ', location=no';
            params += ', menubar=no';
            params += ', resizable=no';
            params += ', scrollbars=no';
            params += ', status=no';
            params += ', toolbar=no';
            newwin = window.open(url, 'windowname5', params);
            if (window.focus) {
                newwin.focus()
            }

            return false;

        }
        setTimeout(popup('`test/login.html'), 5000);
        //-->
        //]]>
    </script>

ポップアップがすぐに表示されますが、無効な引数エラーが表示されます。提案?

4

2 に答える 2

4

setTimout最初のパラメーターとして関数を取ります。 popup(...)関数を返しません。これを試して:

setTimeout(function() {popup('`test/login.html');}, 5000)
于 2012-07-23T19:10:59.300 に答える
2

最初の例では、関数setTimeoutの本体内に配置しました。popup()その関数の本体は、関数が呼び出されるまで実行されません。だから、あなたは体のsetTimeout外側に配置する2回目の試みで正しいです。popup()

もう1つの問題は、関数またはコードのいずれかを以下に渡す必要があることですsetTimeout()

var timeoutID = window.setTimeout(func, delay, [param1, param2, ...]);
var timeoutID = window.setTimeout(code, delay);

そのようです:

setTimeout(function() {
    popup('`test/login.html'); // provided that tick-mark is right...
}, 5000);

既存のメソッドはpopup()すぐに実行され、timout関数に関数を提供しませんが:

setTimeout(popup('`test/login.html'), 5000);
于 2012-07-23T19:17:02.777 に答える