我有一个使用JMF库的applet,如下所示:
<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不是函数)。
仅当我将Windows 7与Firefox 8.0.1一起使用时才会抛出此问题
因为此代码适用于:
你对这个问题有任何想法!!?
答案 0 :(得分:2)
我认为你正试图调用该函数,但它仍然没有加载(浏览器在applet加载时表现不同,有些同步加载,而其他不加载)。
在尝试调用函数之前检查函数是否存在会更安全,如果没有,请告诉浏览器等待几毫秒。
这是一个模拟代码:
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);
}