2012-08-09 1 views
1

Я развиваю веб-плагин с FireBreath, и я довольно новичок в этой области. Я до сих пор разработал довольно сложный API-интерфейс плагина (с зарегистрированными методами, свойствами и некоторыми другими переменными и структурами). Я загружаю его на страницу с помощью javascript и по умолчанию
объект id = "plugin0" type = "application/x-myapp> tag.
Но теперь мне нужно перенаправить на другую страницу html, и мне нужно сохранить все мои ранее заполненные переменные с предыдущей страницы. С той же моделью с тегом OBJECT я думаю, что я создал еще один экземпляр моего плагина, потому что все переменные были неопределенными. Поэтому мой вопрос заключается в том, как сохранить один экземпляр плагина и сделать его доступным на нескольких html-страницах?
В частности У меня есть одна страница, где я храню переменные и указатели внутри класса API плагина с окном входа в систему, и после входа мне нужно перенаправить на другую страницу и получить доступ к ранее заполненным переменным и указателям.Плагин FireBreath через несколько страниц

ответ

3

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

Тем не менее, есть несколько вариантов, вы можете попробовать для того, что вы делаете:

1) Переписать ваш сайт, чтобы быть AJAX и Javascript привода так, что все страницы, на самом деле та же страница с различными хэштег, и т. д. См. http://backbonejs.org/ для одной структуры, которая помогает в этом. С точки зрения плагина это, безусловно, самое простое решение, но для этого может потребоваться переписать весь ваш сайт, что может быть проблематичным.

2) Поддерживайте состояние с помощью своего веб-приложения и передавайте данные обратно в плагин на каждой странице. Вы можете сделать это через теги param или вызовы функций после того, как будет создан плагин

3) Создайте своего рода «сеанс» с вашим плагином с данными, хранящимися в глобальном пространстве памяти; вы можете возобновить «сеанс» на другой странице. Например:

if (!plugin.restoreSession("userid")) { 
    plugin.createSession("userid"); 
} 

В этом примере createSession и restoreSession будут использоваться для инициализации или возобновления заданного сеанса. Проблема заключается в том, что вы не знаете, сколько вкладок или страниц открыто с помощью вашего плагина, так что вы можете легко столкнуться между страницами, которые обращаются к тем же глобальным данным. Кроме того, кто-то может создать другую веб-страницу, которая использует ваш плагин, и восстанавливает сеанс, а также изменяет или обращается к данным, поэтому это риск безопасности. Вы могли бы смягчить это, сохранив доменное имя с сеансами и разрешив доступ к сеансу из того же домена, но ... ну, теперь вы в основном только что создали файлы cookie.

Кроме того, браузер фактически не гарантирует, сколько времени будет загружен ваш модуль плагина; он может в любой момент выгрузить его на вас, чтобы не было активных экземпляров (между запросами страниц). На практике гораздо более вероятно, что модуль плагина не будет выгружен до закрытия браузера, а это означает, что любые данные, хранящиеся в глобальной памяти в вашем плагине, не будут освобождены и будут продолжать занимать память до закрытия браузера.

4) Создайте расширение для браузера, которое использует ваш плагин и работает с несколькими запросами на страницы. Я не знаю, как это сделать, но то, что я слышал от других, заставило меня поверить, что это возможно. Имейте в виду, что вам нужно сделать один для каждого поддерживаемого браузера, и это, вероятно, невозможно в IE; возможно, только в Firefox/Chrome.

Поскольку вы новичок в StackOverflow, позвольте мне приветствовать вас на сайте и напомнить вам всякий раз, когда вы публикуете вопрос (а не только этот!), Чтобы продвигать полезные ответы и стараться всегда отмечать один как правильный.

+0

Привет и благодарю вас за полезный и сложный ответ. Где-то в глубине души я подумал, что есть вероятность, что я не смогу этого сделать. Я думаю, что пойду 1), так как мой сайт состоит всего из 2 страниц. – Raadush

+0

Имейте в виду, что если вы используете CSS для отображения плагина: нет или видимость: скрытый, вы заставите его выгружать; самое простое решение - это, как правило, абсолютное положение и делает его 1px на 1px, когда он должен быть скрыт – taxilian

 Смежные вопросы

  • Нет связанных вопросов^_^