簡體   English   中英

setTimeout() 不會執行

[英]setTimeout() won't execute

我有兩個使用setTimeout().例子setTimeout(). 這個有效:

<html>
<head>
<script type='text/javascript' src='https://www.google.com/jsapi'></script>
<script type="text/javascript">
    google.load('visualization','1',{packages:['table']});
    function start() {
            setTimeout(ShowClipboardContent, 2000);
    }

    function ShowClipboardContent() {
        var data = new google.visualization.DataTable(window.clipboardData.getData('Text'));
    var table = new google.visualization.Table(document.getElementById('div'));
    table.draw(data,{showRowNumber: true});
    }
    </script>
</head>
<body>
    <button onclick='start();'>Show text data in clipboard</button>
    <div id='div'></div>
</body>
</html>

但這不會:

<!DOCTYPE html>
<html>
<head>
    <script type='text/javascript' src='https://www.google.com/jsapi'></script>
    <script type='text/javascript'>
        google.load('visualization','1',{packages:['table']});
    </script>
    <script type='text/javascript'>
        //runs powershell and copies output onto clipboard
        function powershell(t) {
            //object that will execute powershell
            var run = new ActiveXObject("Shell.Application");
            //breaks the list of servers into array
            var servers = t.textarea.value.split('\n');
            //script that powershell will run
            var script = 'some powershell command';
            //path to powershell.exe
            var program = 'C:\\Windows\\system32\\WindowsPowerShell\\v1.0\\powershell.exe';
            //putting it all together
            run.ShellExecute(program,script,'','open','1');
            setTimeout(drawTable, 10000);
        }

        //draws data table using data from clipboard
        function drawTable() {
            var data = new google.visualization.DataTable(window.clipboardData.getData('Text'));
            var table = new google.visualization.Table(document.getElementById('table'));
            table.draw(data, {showRowNumber: true});
        }
    </script>
</head>
<body>
    <div id='form'>
        <form>
            Enter name(s):<br />
            <textarea id='textarea' style='width:20%; height:500px;'></textarea><br />
            <button onclick='powershell(this.form)'>Query</button>
        </form>
    </div>
    <div id='table'></div>
</body>
</html>

重申一下:問題是setTimeout()不適用於第二個代碼,但適用於第一個代碼,我想知道為什么,因為我看不出有什么區別。

嘗試添加一個console.log(drawTable); 就在你超時之前。 如果它返回“函數”,那很好,你的超時就可以了。 如果沒有返回任何內容,您的 ActiveX 腳本應該會破壞代碼

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM