【问题标题】:error when calling applet method with javascript使用 javascript 调用小程序方法时出错
【发布时间】:2010-07-25 06:55:38
【问题描述】:

我想使用仅适用于 jre 1.6 及更高版本的小程序读取机器的网卡身份。 即使小程序在页面加载时成功加载,我也无法使用 javascript 调用小程序方法。 当我通过从按钮调用 javascipt 检查小程序功能时,它按预期工作。 为什么我不能在加载时调用小程序函数。

我在 IE 上发现了一个错误 " 对象不支持该属性或方法"

下面的代码在 firefox 上运行良好,但在 IE6 和 7 下无法运行


 ** script  **

function getMAC(){

      try{
        var a=null;
        var obj=null;
        a=document.getElementById('jsap').readMACaddress();
  alert('mac address:'+a);
      }catch(e){
  alert('error::'+e);
      }

}
 ** /script **

  ** object type="application/x-java-applet"
  classid="clsid:CAFEEFAC-0016-0000-0000-ABCDEFFEDCBA" 
 width= "180" height= "180"  name="jsap" id="jsap" 

   **param name="archive" value="macaddr.jar" 
  **param name="code" value="com/mac/GeneralApplet" 
  **param name="mayscript" value="yes" 
  **param name="scriptable" value="true" 
 **/object 


 **input type="button" name="getmac" value="show" onclick="getMAC();" **


 **script **

 getMAC();

 **/script **

请帮帮我

谢谢 悠喜

【问题讨论】:

    标签: java applet


    【解决方案1】:

    也许您缺少对象标记的CLASSID 属性? 也可以尝试更改函数以使用document.getElementById

    function getMAC(){
       // ...
       a=document.getElementById("jsap").readMACaddress();
       // ...
    }  
    

    有关classId 属性的更多信息记录在here

    【讨论】:

    • 我按照你说的修改了脚本。问题仍然存在..错误是“对象不支持此属性或方法”
    • 您是否尝试将classid属性添加到object标签?
    【解决方案2】:

    根据http://download.oracle.com/docs/cd/E17409_01/javase/6/docs/technotes/guides/plugin/developer_guide/java_js.html,对象、小程序和嵌入标签的语法发生了变化。 'MAYSCRIPT' 属性应该是大写的(也许大小写很重要)。

    我会尝试使用 'true' 而不是上面同一页面所建议的 'yes'。

    我似乎记得您需要在 IE 中使用 MAYSCRIPT 作为属性而不是参数。所以我会尝试类似

    <object type="application/x-java-applet"
      classid="clsid:CAFEEFAC-0016-0000-0000-ABCDEFFEDCBA" 
     width= "180" height= "180"  name="jsap" id="jsap" MAYSCRIPT="true" >
      <param name="archive" value="macaddr.jar" />
      <param name="code" value="com/mac/GeneralApplet"  />
      <param name="MAYSCRIPT" value="true" />
      <param name="scriptable" value="true" />
    </object>
    

    另外,您提到(如果我理解正确的话)问题发生在加载时。尝试从 body 元素的 onLoad 事件调用您的方法,这应确保在触发之前已加载每个资源。

    <body onLoad="yourCode();" />
    

    希望对你有帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-22
      • 1970-01-01
      • 2015-01-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多