У меня есть два примера, используя 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()
воны я работаю над вторым кодом, но работает над первым, и я хотел бы знать, почему, потому что я не вижу разницы.
Вы уверены, что проблема в 'setTimeout', а может быть, и в целом в ActiveX? –
Очевидно, что код * before * на вызов 'setTimeout' в' powershell' не работает, возможно, потому, что ни один современный браузер больше не поддерживает вызовы '' ActiveXObject''. Посмотрите в своей веб-консоли на наличие ошибок, выполните код в отладчике, встроенном в ваш браузер, и т. Д. –
Откройте консоль (например, cmd + opt + J на Mac и Chrome) и скопируйте и вставьте здесь ошибку. –