2010-03-11 59 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()的调用失败时,此对象不会启动新进程。它对系统资源也没有明显的影响。