我有開始一些像這樣的JScript代碼(由一些舊的VBScript轉換):帶拼寫檢查窗口,在Windows中使用JavaScript/JScript中到前臺7
var Word = new ActiveXObject("Word.Basic");
Word.FileNew(); // opens new Word document
Word.Insert(IncorrectText);
Word.ToolsSpelling(); // opens spell check behind IE
的想法是利用微軟Word拼寫檢查對於瀏覽器而言,它在XP中運行良好,但拼寫複選框在Windows 7/IE 8的後臺打開(this question告訴我,問題在Vista中開始,可能是操作系統問題,而不是瀏覽器或Office問題) 。
所以我的問題是,我怎麼能把這個窗口放到前臺?一個重要的注意事項是最後一行Word.ToolsSpelling();
鎖定了我的腳本,所以我所做的任何事情都需要在這之前完成。
我已經試過
var wshShell = new ActiveXObject("WScript.Shell");
wshShell.AppActivate("Document1 - Microsoft Word"); // or some other text
的ToolsSpelling呼叫之前,但這並不做任何事情(也許是因爲Word文檔實際上並沒有在這一點上顯露呢?)。當然,如果沒有「Document1」已經打開,這隻會起作用,所以這是一個值得懷疑的想法。
根據this answer,我試圖使用window.blur();
爲了模糊IE,但是這隻會在IE窗口是唯一打開的時候才起作用。也許有一些方法可以循環遍歷所有打開的窗口並應用它?
SetForegroundWindow看起來很有希望,但我不知道如何在JSript中使用它。
任何想法?
注意:瀏覽器權限將完全打開此網站。
更新:原來如果您使用Word.Application
,拼寫檢查出現在前面,因爲它應該。只有Word.Basic
方法都有這個問題(我不希望知道爲什麼永恆的這一側):
var wordApp = new ActiveXObject("Word.Application");
wordApp.Documents.Add();
wordDoc = wordApp.ActiveDocument;
... // safety checks before insertion
wordSelection.TypeText(IncorrectText);
wordDoc.CheckSpelling();
wordApp.Visible = false; // CheckSpelling makes the document visible
我得到一個「對象不支持這個屬性或方法」錯誤'Word.Visible = true;'。與'Word.WindowState = WIN_MIN'一樣。也許這些函數不適用於Word.Basic? – jtpereyda 2011-06-09 18:22:44
你可以嘗試'Word.Application'作爲ActiveXObject嗎?讓我知道。 – 2011-06-09 18:24:01
'var Word = new ActiveXObject(「Word.Application」);'確實有用,但它使其他調用無效。我認爲'Word.FileNew()'的替換是'Word.Documents.Add()',但是我在選擇時遇到了問題。如果你或者某個人已經知道如何使用這個API,那會很有幫助。否則,我會在週末之後拿起它。 – jtpereyda 2011-06-09 23:43:21