2013-04-30 1 views
1

j'ai une applet qui utilisent les bibliothèques JMF, appelé comme ceci:Appel Applet.getMethod() avec le javascript jette msg d'erreur: TypeError: Applet.getMethod() n'est pas une fonction

<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> 

puis-je appeler un fonction javascript:

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

dans la deuxième ligne de code JavaScript, une erreur est générée dans la console javascript (erreur de type: cameraViewer.listDevices ne sont pas une fonction).

ce problème est jeté que lorsque j'utilise Windows 7 avec Firefox 8.0.1

Parce que ce code fonctionne bien avec:

  • Windows 7 et Chrome
  • Windows 7 et Firefox 20
  • Windows XP et Firefox 8.0.1

Avez-vous des idées sur ce problème !!?

Répondre

2

Je pense que vous essayez d'appeler la fonction alors qu'elle n'est pas encore chargée (les navigateurs se comportent différemment lors du chargement de l'applet, certains le chargent de manière synchrone alors que d'autres ne le font pas).

Il serait plus sûr pour vous de vérifier si la fonction existe avant d'essayer de l'appeler, dans le cas contraire, dites au navigateur d'attendre quelques milli secondes.

est ici un code maquette pour vous:

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); 
} 
+0

Merci pour la réponse qui m'a donné une idée d'utiliser une méthode de sommeil. Donc dans mon cas, j'ai encouragé le problème avec try catch block, et quand j'attrape l'exception, je rappelle ma fonction après quelques millisecondes avec (méthode setTimeout). – morjane

Questions connexes