2009-03-22 10 views
1

Eclipse vous permet de déboguer les applets en utilisant sun.applet.AppletViewer. Il va réellement démarrer l'applet, l'exécuter et émuler l'exécution complète du navigateur. Si vous avez du code de manipulation javascript dans votre applet, cela provoquera JSException car le contexte actuel n'est pas un vrai moteur compatible JS.Ignorer négligemment netscape.javascript.JSException pendant le développement

Comment pourriez-vous résoudre ce problème? Je peux voir plusieurs chemins possibles:

  1. Enveloppez l'exception dans try {} catch() et ignorez-la - Pas une bonne pratique.
  2. Indicateur de passage et d'environnement indiquant au code que nous sommes actuellement en mode de débogage, de sorte qu'il n'essaiera pas d'exécuter le code JS - OK, mais nécessitera une intervention manuelle de chaque développeur.
  3. Identifier le contexte actuel n'est pas un navigateur - Comment?
  4. Trouver un autre AppletViewer qui peut émuler un comportement complet du navigateur, y compris JS - Y at-il?
  5. Plus?

Merci pour vos idées.

Répondre

1

Pas sûr, mais ne parviennent pas une solution viable, j'ai réussi à venir avec:

private void notifySelectionState(){ 
    JSObject jsObject = null; 

    try { 
     jsObject = JSObject.getWindow(applet); 

     // An exception can be thrown here (hopefully) only is running in debug environment... 
    } catch (JSException e) { 
     // So actually what I'm doing here is checking (in a very lame fashion) for if I'm in a the browser 
     // content or in the AppletViewer 
    } 

    if (jsObject != null) { 
     jsObject.call(...); 
    } 
} 
0

Sur certains navigateurs plus anciens, JSObject va jeter RuntimeExceptions génériques au lieu de JSException. Donc, vous pouvez jeter votre filet un peu plus large et laisser un bon commentaire dans vos emballages.