Mozillar
小狐狸
小狐狸
  • UID22743
  • 注册日期2008-01-25
  • 最后登录2009-08-07
  • 发帖数21
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
阅读:8854回复:6

求助!在Firefox中如何使用Javascript调用(使用)ActiveX控件的属性和方法

楼主#
更多 发布于:2008-03-15 14:36
时间紧的大虾看标题就够了:)
。(尽管这个要求我都感觉很怪异,但还是辛苦各位了,有任何一点点想法或者提示都感激不禁啊)

在IE中,使用JS调用一个ActiveX控件的属性和方法比较简单,可是在Firefox中却遇到了问题。因为项目已经完成大量ActiveX控件,而且希望在FF中也能使用这些ActiveX控件。如果无法直接调用的话,能够间接利用这些ActiveX控件也可以。注意原来的项目网页的脚本是针对IE的,有大量调用ActiveX属性和方法的语句,不知道在FF下这些脚本应当怎样编写。
下面是我自己写的一个含有ActiveX控件(自己简单做的)的网页。我用的是win32OS,ff3.02b,使用了King的支持ActiveX的插件,如果只是显示控件是没有问题的,但就是不知道如何调用它的属性和方法。
<HTML>
<head>
<script language="JavaScript1.3">
function Validate(){
alert(document.getElementById("my_ActiveX").safeLevel+"");

 }

function initial(){
Validate();
}
</script>
</head>

<BODY onload="initial()">
<embed id="my_ActiveX" type="application/x-oleobject"  border="0" width="800" height="600" clsid="{86294A93-AEDA-445E-87A2-FEEA4B0B7322}"  >
</BODY>
</HTML>

safeLevel是我在制作控件时添加的一个属性,Long长整型默认值0,做好之后注册,然后查询注册表得到clsid添到上面的代码中,所以这个地方是没有什么问题的,自己还写过一个IE的版本,运行正常,打开网页会看到一个警示框内容为字符0,说明在IE下能够正常获取该属性(当然与上面的调用方法不同)。但是使用FF打开上面的网页时,警告窗的内容是undefined,我想应该是ff中的JS认为safelevel这个属性不存在,因为document.getElementById("my_ActiveX").width时警告框会正常显示控件宽度,但是这个width属性只是控件作为一个html元素所具有的属性,并不是我在制作控件的时候定义的属性。上面的代码在ff的错误控制台中也没有错误和警告,让人无法继续下手……   究竟该如何调用?
idragonet
千年狐狸
千年狐狸
  • UID15658
  • 注册日期2006-11-12
  • 最后登录2017-11-15
  • 发帖数2642
  • 经验162枚
  • 威望1点
  • 贡献值74点
  • 好评度118点
  • 社区居民
1楼#
发布于:2008-03-15 14:36
安装个Firebug扩展调试JavaScript。。。。


Firefox本来就不支持ActiveX控件。
wushi777
非常火狐
非常火狐
  • UID12365
  • 注册日期2006-04-17
  • 最后登录2011-04-13
  • 发帖数817
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度1点
2楼#
发布于:2008-03-15 14:36
sunwan
火狐狸
火狐狸
  • UID9953
  • 注册日期2005-11-20
  • 最后登录2009-07-27
  • 发帖数105
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
3楼#
发布于:2008-03-15 14:36
一个wmp的例子:
<!-- Internet Explorer * Windows Media Player ActiveX -->
  <object id="wmpAx" name="player1"
      classid="CLSID:6BF52A52-394A-11D3-B153-00C04F79FAA6"
      type="application/x-oleobject" width="320" height="320"
      codebase="http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=6,4,5,715"
      standby="Loading Microsoft Windows Media Player components...">
    <param name="url" value="http://members.aol.com/jrzycrim01/mozilla/wmp/vidtest-HS.wmv" />
    <param name="autostart" value="false" />
    <param name="ShowStatusBar" value="true" />
    <param name="volume" value="100" />

    <!-- For other browsers * Windows Media Player -->
    <!--[if !IE]> <-->
    <embed name="player1" type="application/x-mplayer2"   height="320" width="320" showstatusbar="true" autostart="false"
       pluginspage="http://www.microsoft.com/windows/windowsmedia/"
       src="http://members.aol.com/jrzycrim01/mozilla/wmp/vidtest-HS.wmv">
    <!--> <![endif]-->

  </object>

播放器代码要写两层。

对应的javascript:
var player=false
  function setup()
  {
    if(!player)
     {
       var p1=document.getElementsByName("player1");
       for(var x=0;x<p1.length;x++)
       {
          if(p1[x].controls)
         {
            player=p1[x];
            break;
         }
       }
     }
  }
    // 播放
    function play()
    {
        setup();
        player.controls.play();
    }
    // 暂停
    function pause()
    {
        setup();
        player.controls.pause();
    }
    // 停止
    function stop()
    {
        setup();
        player.controls.stop();
    }

这样在IE和Firefox(安装了新的wmp11 plungis)都能正常工作。
对于别的,如:realplayer、quicktime都有相应的脚本,你自己到他们的页面上找找。
其实关键的是怎样让浏览器正确访问到播放器,按标准一个document里只能有一个唯一的ID,所以用getElementById()是行不通的,因此上面的函数setup()就很关键。
Mozillar
小狐狸
小狐狸
  • UID22743
  • 注册日期2008-01-25
  • 最后登录2009-08-07
  • 发帖数21
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
4楼#
发布于:2008-03-15 14:36
谢谢楼上两位;
To2楼:小弟是是非要找到办法不可,呵呵
To3楼:虽然早就看过了 ,还是要谢谢你
maochong
小狐狸
小狐狸
  • UID25855
  • 注册日期2008-08-16
  • 最后登录2008-08-16
  • 发帖数1
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
5楼#
发布于:2008-03-15 14:36
找到方法没?
找到方法没?我也不知道怎么样解决的啊
Mozillar
小狐狸
小狐狸
  • UID22743
  • 注册日期2008-01-25
  • 最后登录2009-08-07
  • 发帖数21
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
6楼#
发布于:2008-03-15 14:36
http://www.iol.ie/~locka/mozilla/plugin.htm
这是最早的支持ActiveX的插件,你所要做的就是把它的源代码重新编译链接一遍,注意,源代码还是有几处错误的。学习OLE之后就会知道你没有必要实现这个插件的所有功能。出于机密我修改好的插件不能提供给你,甚至我自己都不能随意使用。所以还是你自己研究吧。如果你懂一点ATL并且精通OLE(尤其是容器部分)和XPCOM,那么你可以轻松看懂这个插件源码,找出其中的错误并且完善它。
游客

返回顶部