Как ожидать апплета Java, чтобы закончить загружаться на Safari?

Это не работает в Safari:

<html>
<body>
<applet id="MyApplet" code="MyAppletClass" archive="MyApplet.jar">
<script type="text/javascript">
   alert(document.getElementById('MyApplet').myMethod);
</script>
</body>
</html>

myMethod открытый метод, объявленный в MyAppletClass.

Когда я сначала загружаю страницу в Safari, она показывает предупреждение, прежде чем апплет закончил загружаться (так дисплеи окна сообщения undefined). Если я обновляю страницу, апплет был уже загружен и аварийные дисплеи function myMethod() { [native code] }, поскольку Вы ожидали бы.

Конечно, это означает, что методы апплета не доступны, пока это не загрузилось, но Safari не блокирует JavaScript от выполнения. Та же проблема происходит с <body onLoad>.

То, в чем я нуждаюсь, является чем-то как <body onAppletLoad="doSomething()">. Как я работаю вокруг этой проблемы?

PS: я не уверен, релевантно ли это, но JAR подписывается.

6
задан Brian Tompsett - 汤莱恩 27 September 2019 в 15:16
поделиться

2 ответа

Я использую таймер, который сбрасывается и проверяет несколько раз, прежде чем сработает.

<script language="text/javascript" defer>

function performAppletCode(count) {
    var applet = document.getElementById('MyApplet');

    if (!applet.myMethod && count > 0) {
       setTimeout( function() { performAppletCode( --count ); }, 2000 );
    }
    else if (applet.myMethod) {
       // use the applet for something
    }
    else {
       alert( 'applet failed to load' );
    }
}  

performAppletCode( 10 );

</script>               

Обратите внимание, что это предполагает, что апплет будет работать в Safari. У меня было несколько случаев, когда апплет требовал Java 6, который просто зависал в Safari даже с кодом, подобным приведенному выше. Я решил выполнять обнаружение браузера на сервере и перенаправлять пользователя на страницу с ошибкой, когда браузер не поддерживает апплет.

8
ответ дан 8 December 2019 в 18:39
поделиться

У меня был аналогичный некоторое время назад и добавление MAYSCRIPT к тегу апплета решило мою проблему.

Взгляните на эту страницу: http://www.htmlcodetutorial.com/applets/_APPLET_MAYSCRIPT.html

Надеюсь, это поможет!

2
ответ дан 8 December 2019 в 18:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: