2010-07-12 72 views
2

我进入这个问题: 我使用C#创建COM对象,注册它并使用powershell设法使用它。 当我试图用JavaScript来做同样的事情时,它却失败了,但是JavaScript一直在抛出对象空错误。如何使用JavaScript处理COM对象?

对于如何解决这个问题你有什么建议吗?或者也许你的JavaScript不支持COM(如果是这样,我可以在哪里读到更多关于它)?

非常感谢!

+4

发布您的代码...... – Nate 2010-07-12 21:03:28

+1

如果你的意思** **的JScript,这是ECMAScript中的MS”方言,它支持** **的ActiveX对象。 – 2010-07-12 21:06:03

+0

但COM对象(如我创建)不起作用?我使用 新的ActiveXObject(),但它保持抛出对象null。 – shaik 2010-07-12 21:09:08

回答

1

Javascript确实不支持COM。一个选项是使用JScript和ActiveX包装到COM对象。此外,它只能在Internet Explorer中使用。

Instantiating a COM class
Calling functions of a COM object in JScript
Other JScript/COM tutorials, including script callbacks

+0

不是您唯一的选择。 – 2010-07-12 21:11:15

+0

所以我从你的答案中看到。谢谢你的启发。 – Michal 2010-07-12 21:29:26

+0

很难告诉OP关于使用细节的问题,但JScript COM/ActiveX可用于Windows脚本宿主(WSH)以及Active Server Pages(ASP),并非严格限于Internet Explorer。虽然课程浏览器特定的JS代码不能在WSH和ASP下运行。 – David 2015-03-31 21:35:18

2

使用萨娜提饶JSDB shell。它基于Firefox中使用的核心Spidermonkey引擎(Mozilla的Javascript实现),但有一些绑定数据库的对象等等。它有一些限制,但除非你使用复杂的东西,否则应该可以使用它。

例子:

x=new ActiveX('MSXML2.DOMDocument.6.0'); 
x.async = false; 
// I forget how to use IXMLDOMDocument but other calls go here 
+0

不应该是新的ActiveXObject()而不是ActiveX()? – David 2015-03-31 18:11:50

+0

编号http://www.jsdb.org/jsdbhelp.html#ActiveX – 2015-03-31 20:33:50

+0

好的,谢谢。有趣的是,这个解决方案/实现偏离了实例化部分的JScript。我猜想在IE浏览器普及和标准化之前,旧版IE不支持XmlHttpRequest()。 – David 2015-03-31 21:37:32