呼叫Applet.getMethod()的JavaScript抛出错误信息:类型错误:Applet.

2019-10-18 02:38发布

我有使用JMF库,被称为像这样的小程序:

<object id="cameraViewer"
    classid="java:MyApplet.class"
    type="application/x-java-applet"
    archive="myapplet.jar" height="197" width="159"
    align="middle" codebase=".">
    <param name="code"
        value="MyApplet" />
    <param NAME="MAYSCRIPT" VALUE="true" />
    <param name="appletWidth" value="250" />
    <param name="appletHeight" value="200" />
    <param name="archive" value="myapplet.jar" />
    <param name="JAVA_CODEBASE" value="." />
    <font color="red">Applet error</font>
</object>

然后我调用javascript函数:

var cameraViewer = document.getElementById('cameraViewer');
var deviceList = new Array(cameraViewer.listDevices());

JavaScript代码的第二行,则会引发错误在JavaScript控制台( 类型错误:cameraViewer.listDevices不是函数 )。

当我使用Windows 7与Firefox 8.0.1这个问题只抛出

因为这段代码工作正常:

  • Windows 7和Chrome浏览器
  • Windows 7和Firefox的20
  • Windows XP和火狐8.0.1

你有关于这个问题的任何想法!?

Answer 1:

我想你想打电话,而它仍然尚未加载功能(浏览器differentely行为上的小程序加载,一些负载它同步,而其他没有)。

这将是更安全的为您检查,如果试图调用之前存在的功能,如果它不,告诉浏览器等待几毫秒的。

这里是为你模拟代​​码:

    var cameraViewer = document.getElementById('cameraViewer');

    if (typeof(cameraViewer.listDevices) != "undefined") { 
    // safe to use the function
    var deviceList = new Array(cameraViewer.listDevices());
}
else{
  setTimeout(function() {
    var deviceList = new Array(cameraViewer.listDevices());
  }, 1000);
}


文章来源: Call Applet.getMethod() with javascript throws error msg : TypeError: Applet.getMethod() is not a function