Расширение Firefox - Загрузить страницу в строке меню? - PullRequest
2 голосов
/ 15 мая 2009

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

Я хочу создать расширение, которое, помимо прочего, будет иметь функцию, при которой, когда пользователь нажимает на иконку строки состояния, выскользнет небольшое окно, и внутри этого окна появится страница входа на сайт. Разумеется, тогда они будут входить в систему как обычно, и любые файлы cookie или проверки подлинности будут обрабатываться как обычно.

Я не уверен, что в Google, чтобы найти правильные функции наложения / Chrome / пространства имен. Кроме того, я не хочу AJAX-источник страницы, я хочу, чтобы фактическая страница загружалась прямо с сервера (по соображениям безопасности), НО, я также хочу перехватить то, что видит пользователь на странице (своего рода greasemonkey стиль, я думаю), так что отображаются только поля формы и заголовок, а не какие-либо из "вы забыли свой пароль" и что не информация. ТАКЖЕ (и я уверен, что если что-то из перечисленного возможно, это тоже должно быть), я хочу перехватить ответ сервера, чтобы после того, как он сделал то, что ему нужно (с которым я не хочу связываться) и, вероятно, не может без проблем) пользователь видит что-то вроде "Ты сделал это!" в том же выдвижном окне, а не в обычном выводе сервера. (Сервер фактически выводит предупреждение javascript, которое плохо сочетается с расширением, а затем перенаправляет пользователя на домашнюю страницу, которая мне тоже не нужна. Но я вполне уверен, что если я смогу научиться перехватывать вывод Я могу просто убить эти биты.)

Так что я думаю, что вопрос (ы): Есть ли способ:

  1. Сделайте, чтобы окно НЕ-МЕНЮ выдвигалось при нажатии,
  2. Загрузите живую веб-страницу в это окно и
  3. Модифицировать вывод страницы в реальном времени, оставаясь при этом на сайте?

Страница входа в систему зашифрована, и логин / пароль считается совершенно секретным, поэтому я должен максимально уважать безопасность и не пытаться применять более простые методы, такие как ajax или cookie-moding.

спасибо!

Ответы [ 2 ]

3 голосов
/ 15 мая 2009

Это пример:

Сначала создайте оверлей xul (login.xul), который содержит элемент iframe, который отобразит вашу страницу входа:

<?xml version="1.0"?>
<overlay id="login-window-vb" xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">

    <window id="main-window">
          <vbox>
            <iframe id="login-frame" src="http://yoursite.com/custom-login" style="display:none;">

           </iframe>
          </vbox>
    </window>

</overlay>

Обратите внимание, что я установил стиль отображения "none", чтобы мы могли отображать iframe, только когда пользователь щелкает значок входа в строке состояния.

затем зарегистрируйте это наложение в файле манифеста:

content     yourextension    chrome/content/
overlay chrome://browser/content/browser.xul chrome://yourextension/content/login.xul

затем добавьте еще один оверлей, который будет отображать значок входа в строке состояния:

    <?xml version="1.0"?>
    <overlay id="login-status" xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">

<script type="application/x-javascript">
function ShowLogin() {
// get the login iframe and display it
var loginBox = document.getElementById('login-frame');
loginBox.style.display = "";
loginBox.height = "200px";
}
</script>

    <statusbar id="status-bar">
        <statusbarpanel id="login-icon" image="" label="Login" oncommand="ShowLoginBox()" />
    </statusbar>

    </overlay>

и зарегистрируйте это наложение так же, как и для предыдущего.

Теперь iframe выведет вашу страницу входа на сервер и зарегистрирует cookie И я думаю, что любой сценарий Greasmonkey тоже достигнет этого iframe.

0 голосов
/ 15 мая 2009

Для # 1 ищите код, который показывает «Должен ли Firefox запомнить этот пароль?»

Я не уверен насчет # 2, но так как главное окно HTML в Firefox тоже XUL, я не понимаю, почему это не должно быть возможно.

Номер 3 немного сложнее. Прежде всего, веб-сайты постоянно меняются, так как вы планируете узнать, какую часть отфильтровывать? Нет проблем изменить DOM при загрузке страницы (посмотрите на Greasemonkey, например, он так и делает).

...