2010-03-11 30 views
3

我們使用MS Word作爲私人公司網站上幾個字段的拼寫檢查程序,以及何時IE安全設置是正確的,它效果很好。 (將該網站的區域設置爲「可信」,並將信任區域修改爲允許控制在無提示的情況下運行。)當IE安全性不允許創建對象時,新的ActiveXObject('Word.Application')創建新的winword.exe進程

我們正在使用的腳本創建一個單詞對象並在此後關閉它。雖然該對象存在,但winword.exe進程仍在運行,但在Word對象關閉時會被銷燬。

如果我們的站點未設置在受信任區域(具有默認安全級別的Internet區域)中,創建Word對象的調用將按預期方式失敗,但仍會創建winword.exe進程。我沒有辦法與腳本中的這個進程交互,所以這個進程一直存在,直到用戶註銷(用戶無法手動銷燬進程,即使他們這樣做也不是一個好的解決方案。 )

試圖創建對象是調用...

try { 
     wordApplication = new ActiveXObject('Word.Application'); 
} catch(error) { 
     // irrelevant code removed, described in comments.. 
     // notify user spell check cannot be used 
     // disable spell check option 
} 

所以每次頁面加載這段代碼時可能會再次運行,創造又一個孤兒Winword.exe進程。

wordApplication當然在catch塊中是未定義的。

我希望能夠事先檢測瀏覽器的安全設置,但我已經做了一些搜索,並不認爲這是可能的。

管理在這裏很滿意,因爲它是。只要IE安全設置正確,它就可以工作,並且對我們的目的而言,它工作得很好。 (我們最終可能會考慮拼寫檢查功能的其他選項,但這是快速,便宜的,並且我們需要它做的所有事情。)

這最後一個問題讓我感到困擾,我想對此做點事情,但我沒有想法,還有其他更需要我關注的事情。

在我放下之前,我想我會在這裏提出建議。

回答

1

我還沒有找到一個答案,這個問題,我在什麼問題意味着有關Internet Explorer安全感到不安(我忘了我以前的帖子說我使用的版本:IE 7)

然而,我確實實施了一個我不滿意的解決方法,但仍然比沒有檢查更舒服......

代碼現在嘗試先打開另一個對象,如果代碼失敗,代碼將假定Word將不會打開併發出錯誤。從這一點開始,不再有對新的ActiveXObject()的調用,任何拼寫檢查嘗試都會導致錯誤。

try { 
    oMSInfo = new ActiveXObject('Msinfo32.MSInfo.1'); 
} catch (error) { 
    // error handling code not shown... 
    return; 
} 

當對新ActiveXObject()的調用失敗時,此對象不會啓動新進程。它對系統資源也沒有明顯的影響。