2009-10-20 7 views
0

J'ai deux applets A et B. Elles sont intégrées dans des pages séparées. Sur détruire, A sérialise les objets dans le système de fichiers local. Sur init, B désérialise ces objets. Cette configuration fonctionne très bien dans Windows. Malheureusement, j'ai découvert que cela ne fonctionne pas sous Mac OS X. En effet, B est initialisé avant que A ne soit détruit. Est-ce que quelqu'un sait s'il y a un paramètre d'applet ou un paramètre ou une configuration ou une solution de rechange qui permettra au plug-in Mac OS X Java de se comporter de la même manière que Windows?Cycle de vie de l'applet sous Mac OS X

Navigateur: FF 3.0 OS: Mac OS X 10.4 Java version plug-in: 1.5.0_06

+0

Peut-être que je ne comprendre ce droit, mais comment B init avant A est détruit s'ils sont sur des pages différentes? Ouvrez la page avec A, fermez-la, puis ouvrez la page avec B no. Désolé pour mon ignorance – jitter

+0

Ne peut pas faire cela. La page de A soumet à la page de B. –

Répondre

1

Vous êtes chanceux que cela a travaillé sous Windows, et même sous Windows, le comportement est probablement navigateur spécifique. Selon la documentation de l'API, la méthode stop de l'applet sera invoquée 'quand la page Web qui contient cette applet a été remplacée par une autre page' et la méthode destroy sera invoquée après la méthode stop. Notez le «quand ... a été» et non «avant ... sera». Bref résumé, si vous remplacez une page HTML par l'applet A par une page HTML avec l'applet B, l'API n'appliquera aucun moyen de s'assurer qu'une méthode de l'applet A est invoquée et complétée avant que l'applet B soit initialisée ou démarrée.

Si vous activez les scripts de votre applet, vous avez cependant mettre en œuvre une sorte de méthode de sauvegarde dans l'applet A et invoquer cette méthode en utilisant Javascript de la page A, avant même d'essayer de charger la page B.