繁体   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