1

我有一个使用 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 控制台中抛出错误(TypeError: cameraViewer.listDevices is not a function)。

仅当我将 Windows 7 与 Firefox 8.0.1 一起使用时才会引发此问题

因为此代码适用于:

  • Windows 7 和 Chrome
  • Windows 7 和火狐 20
  • Windows XP 和 Firefox 8.0.1

你对这个问题有什么想法吗!!?

4

1 回答 1

2

我认为您正在尝试调用该函数,而它仍未加载(浏览器在加载小程序时表现不同,有些同步加载,而其他不同步加载)。

在尝试调用函数之前检查函数是否存在会更安全,如果不存在,请告诉浏览器等待几毫秒。

这是给你的模拟代码:

    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);
}
于 2013-04-30T16:17:20.360 回答