Новое обновление Chrome блокирует Java;как я могу ждать, пока не будет предоставлено разрешение, прежде чем вызывать код моего апплета - PullRequest
2 голосов
/ 28 апреля 2011

Недавно Chrome получил новое обновление , которое автоматически блокирует все плагины.Появляется панель, запрашивающая у пользователя разрешение на ее включение. Вот так выглядит панель.

На моем сайте есть кнопка, которая при нажатии загружает апплет Java и вызывает внутри него метод.Проблема в том, что он пытается вызвать метод сразу после загрузки апплета, прежде чем можно будет предоставить разрешение.Естественно, это дает мне ошибку в моем Javascript, говорящем, что такого метода нет.

Как я могу сказать моей кнопке подождать, пока апплету не будет предоставлено разрешение перед вызовом его методов?Я не могу предварительно загрузить апплет, потому что он самоподписан, и я не хочу, чтобы диалоговое окно безопасности появлялось до тех пор, пока оно не понадобится.Обычно это диалоговое окно приостанавливает Javascript и возобновляет его, когда доступ предоставлен или запрещен, но это новое диалоговое окно Chrome работает параллельно с сайтом.

1 Ответ

1 голос
/ 28 апреля 2011

Ваш апплет может вызвать метод Javascript после его успешной загрузки.Ваш Javascript затем будет ожидать вызова этого метода, прежде чем пытаться получить доступ к апплету.

Для связи Java-Javascript у вас есть несколько вариантов.Вы можете найти в Google класс JSObject, хотя, насколько я понимаю, для этого требуются бинарные файлы, специфичные для браузера, и поэтому это может оказаться нереализуемым решением.Что проще, так это просто использование AppletContext showDocument метода для выполнения Javascript, как описано в http://www.brilliantsheep.com/java-to-javascript-communication-made-simple/.

Например, в методе init () вашего апплета у вас будет код, подобный следующему:

getAppletContext().showDocument( "javascript:onAppletIsReady()", "_self" );

А затем просто определите метод с именем onAppletIsReady в вашем javascript, который выполняет любую логику, которую вы ранее выполняли, как только был загружен апплет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...