【问题标题】:Add ActiveX and NPAPI Plugin in one page using Nested Object Tag使用嵌套对象标记在一页中添加 ActiveX 和 NPAPI 插件
【发布时间】:2010-10-26 23:15:24
【问题描述】:

我想在一个页面中嵌入 ActiveX 和 NPAPI 插件,使用嵌套对象标签(Mozilla 推荐),而不是依赖用户代理。

问题是:我想使用一个对象 id,例如 id="MyObject",它将在两个对象标记中定义(对于 ActiveX 或 NPAPI),以便我的 Javascript 直接调用对象 MyObject 而不管是否它是一个 ActiveX 或 NPAPI。

我希望我说清楚了。

【问题讨论】:

    标签: javascript html firefox activex npapi


    【解决方案1】:

    好吧,你不应该那样做。相反,为对象赋予相同的“类”值,并让您的 Javascript 进行查找。

    “id”属性的值必须是唯一的。

    【讨论】:

    • 那我该怎么做呢?两个对象标签都有一个类值,这没问题,但是我怎样才能让对象在所有 Javascript 功能中都是全局的,我怎样才能通过它的类来获取元素呢?
    • 例如: 然后,我在我的 Javascript 中的某个地方调用:objectx = getElementsByClassName('myClass');因为那行不通。
    • 是的,这正是你要做的,它会“正常工作”。这是一种非常常见的做事方式。
    • 很抱歉,它不起作用。没有多少浏览器支持该方法,即使在 FF3.6.10 中它也不起作用,尽管我确实定义了一个自定义 getElementsByClassName 函数以防浏览器不支持它。但我找到了另一个解决方案。不过,感谢您的巨大努力。
    • 你也可以通过其他方式获取元素,你知道的。例如,您可以调用“getElementsByTagName('*')”,然后遍历节点列表以查找所需的节点。
    【解决方案2】:

    getElementsByClassName 对我不起作用,所以我做了一个简单的技巧,效果很好。

    <object classid="clsid:something" id="obj1" >
    <object type="application/x-blah-blah-blah" id="obj2">
    </object></object>
    

    然后在我开头调用的 JavaScript 代码中:

    if (obj2!=null && obj2!=undefined)
    

    或者如果你愿意 if (!(obj2==null || obj2==undefined)) 随便你

    obj1 = getElementById("obj2");
    

    这将为 NPAPI 插件创建对象,或者如果浏览器是 IE,将顺利进行而无需输入该 if 语句(IE 不允许您使用 getElementById 分配给具有 id 属性的对象)。然后,您只需使用 obj1 进行处理或使用它来实例化您认为合适的另一个对象。

    【讨论】:

      【解决方案3】:

      您实际上可以为 activex 控件注册一个 mime 类型,如果它是您的,那么这将允许您对两者都使用 same 对象标记。

      FireBreath (http://firebreath.org) 会这样做。

      更多信息在这里:http://msdn.microsoft.com/en-us/library/aa751976(VS.85).aspx

      【讨论】:

      • 这听起来不太标准,所以我使用了 YouTube 所做的。我检查浏览器是否是 IE,然后根据我动态注入到 DOM 中。
      • 另外,非常感谢您在上校的出色工作,伙计!您的 NPAPI 教程是由纯 win 制作的。
      • 我很高兴他们能帮上忙 =] 注册 mime 类型并不少见,但无论哪种方式都有效。两个方向都有优点和缺点。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-02-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-16
      • 2011-07-27
      相关资源
      最近更新 更多