Как предотвратить выгрузку апплета через веб-страницы? - PullRequest
0 голосов
/ 17 марта 2009

У меня большой апплет, для инициализации которого требуется около 40 секунд (кэши кэшируются, поэтому игнорируйте время загрузки для этого вопроса).

Проблема в том, что если пользователь переходит на страницу A, которая запускает апплет (одно окно), а затем переходит на страницу B, апплет выгружается. Если пользователь возвращается на страницу A, он снова получает 40 секунд времени инициализации.

Я бы хотел иметь возможность запустить апплет, затрачивая 40 секунд времени инициализации один раз и только один раз. Апплет должен находиться в одном окне браузера (то же самое окно, что и мое веб-приложение). Другими словами, я не могу запустить апплет во всплывающем окне.

Есть ли у кого-нибудь креативные идеи относительно того, как предотвратить выгрузку апплета?

Ответы [ 4 ]

1 голос
/ 27 мая 2010

Вы можете показать предупреждение следующим образом:

if(window.body)window.body.onbeforeunload=function(){if(window.event)window.event.returnValue="UNLOAD MSG";};else window.onbeforeunload=function(){return "UNLOAD MSG";};

Это работает практически во всех браузерах, но вы не можете изменить текст, окружающий ваш текст.

1 голос
/ 17 марта 2009

Единственным вариантом будет поместить ваш контент в iframe, который охватывает весь ваш документ, и использовать абсолютное позиционирование для апплета.

<body>
 <iframe id='content' src='FIRST_URL'></iframe>
 <object id='applet'></object>
</body>

С помощью css:

#content {
  width:100%;
  height: 100%;
}

#applet {
  position: absolute;
  left: LEFT_POSITION;
  top: TOP_POSITION;
  width: DESIRED_WIDTH;
  height: DESIRED_HEIGHT;
}

Есть много недостатков:

  • Апплет всегда будет располагаться в одном и том же месте, независимо от страницы
  • Вы будете страдать, если получите iframe полной ширины и полной высоты, особенно в IE
  • Возможно, вы также пострадаете от правильного отображения апплета (объект поверх фрейма, я не могу представить, с какими проблемами вы столкнетесь)
  • Апплет останется, если ваш пользователь нажмет на ссылку, ведущую за пределы вашего сайта, если вы не установите цель для ссылки (то есть target = 'top' или target = '__ blank')
0 голосов
/ 17 марта 2009

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

Я не думаю, что смогу манипулировать DOM таким образом.

Есть еще идеи?

0 голосов
/ 17 марта 2009

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

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