我们假定在VC++中已经得到网页的document指针,然后访问javascript有两种方法:一种是通过document.Script,另一种是通过document.parentWindow(以下直接用window)。它们都具有相同的效果,下面我们就以window为讨论的目标。
在实际的网页客户端脚本开发中,我们曾经混合使用过javascript和vbscript。由于javascript的强大和灵活,在网页中已经很少再使用vbscript了,可有些场合,我们又不得不用。比如,在一个网页中嵌入realplayer播放器控件,我们可以用javascript调用realplayer控件的属性和方法,却只能用vbscript响应realplayer控件的事件。具体信息可以参见realplayer的官方帮助网页http://service.real.com/help/library/guides/extend/htmfiles/ch01_emb.htm#23018
很显然,javascript和vbscript是两个不同的脚本引擎,而且在一个页面环境中,肯定也是以不同的引擎实例而存在。然而,我们发现在两个不同脚本引擎中声明的变量和方法可以互相访问和调用。这是怎么实现的呢?我们尝试着列举几个技术要点就清楚了。
- 二者都支持全局对象。window就是二者的全局对象,凡是全局对象的属性和方法,在访问时,可不加上对象名。如既可以使用window.alert("hello world"),也可以使用alert("hello world");
- window对象包含二者实例的引用。
- window对象实现了IDispatchEx接口,将二者实例中的所有属性和方法,通过IDispatchEx接口向

本文探讨了在VC++环境中,如何通过window对象访问JavaScript和VBScript。虽然两种脚本引擎在网页中独立运行,但window作为全局对象,使得它们的变量和方法能够互相调用。主要介绍了window的三个作用:作为全局对象简化代码、包含不同引擎实例的引用以及通过IDispatchEx接口实现跨引擎访问。尽管这些特性并非必需,但它们提供了代码的简洁性和灵活性。
最低0.47元/天 解锁文章
317

被折叠的 条评论
为什么被折叠?



