Полезная информация

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

№106-03-2012 00:54:14

optical
Участник
 
Группа: Members
Зарегистрирован: 03-03-2012
Сообщений: 9
UA: Chrome 17.0

Вопрос по существу

Итак, вот кусок кода, который работает при загрузке страницы и вбивает в поля LOGIN и PASSWORD

Выделить код

Код:

var data = require("self").data;
var pageMod = require("page-mod");
pageMod.PageMod({
  include: "http://www.mail.ru/",
  contentScriptWhen: 'end',
  contentScript: "document.getElementById('mailbox__login').value = 'LOGIN';"
  +"document.getElementById('mailbox__password').value = 'PASSWORD';"});

НО, как только я хочу забиндить это все на виджет, происходит нечто неведомое. Вся эта структура просто перестает работать. Что делать? помогите?
Код прилагаю, писал двумя способами.

Выделить код

Код:

var widgets = require("widget");
 
// A basic click-able image widget.
widgets.Widget({
  id: "google-link",
  label: "Widget with an image and a click handler",
  contentURL: "http://www.google.com/favicon.ico",
  onClick: function() {
    document.getElementById('mailbox__login').value = 'LOGIN';
  }
});

widgets.Widget({
  id: "mouseover-effect",
  label: "Widget with changing image on mouseover",
  contentURL: "http://www.yahoo.com/favicon.ico",
  onClick: function() {
    pageMod.PageMod({
  include: "http://www.mail.ru/",
  contentScriptWhen: 'end',
  contentScript: "document.getElementById('mailbox__login').value = 'LOGIN';"
  +"document.getElementById('mailbox__password').value = 'PASSWORD';"});
  }
});

Отредактировано Shutnik (06-03-2012 16:04:49)

Отсутствует

 

№230-10-2012 11:46:32

l2cri
Участник
 
Группа: Members
Зарегистрирован: 29-10-2012
Сообщений: 4
UA: Firefox 16.0

Re: Вопрос по существу

Я тоже с такой же проблемой столкнулся. Вся проблема в том contentScript: не видит вообще глобальные переменные. Там скрипт пишется вообще не зависимы й . Если не веришь попробуй такой пример :

Выделить код

Код:

var pageMod = require("page-mod");
pageMod.PageMod({
  include: "*.org",
  contentScript: 'window.alert("Page matches ruleset");'
});

При открытии любой странички с доменом org работает.
А теперь немного изменим код

Выделить код

Код:

var pageMod = require("page-mod");
test = "Page matches ruleset";
pageMod.PageMod({
  include: "*.org",
  contentScript: 'window.alert(test);'
});

И никак ты туда переменную test не поставишь )

а вот такой код будет естественно работать

Выделить код

Код:

var pageMod = require("page-mod");
pageMod.PageMod({
  include: "*.org",
  contentScript: 'test = "Page matches ruleset";'+
'window.alert(test);'
});

вот и думай хоть весь скрипт что вверху написан пиши в contentScript но это не логично. Логичнее было бы через contentScriptFile но тут мне не все понятно . документация тут https://addons.mozilla.org/en-US/develo … e-mod.html

Отредактировано l2cri (30-10-2012 11:50:35)


pocherk<dote>biz

Отсутствует

 

№308-11-2012 20:04:08

softter
Забанен
 
Группа: Members
Откуда: Интернет
Зарегистрирован: 08-11-2012
Сообщений: 1
UA: Opera 12.0
Веб-сайт

Re: Вопрос по существу

l2cri, спасибо, а то я уже весь мозг сломал :usch: не мог понять в чем проблема, буду разбираться.

Отсутствует

 

№413-11-2012 09:53:01

l2cri
Участник
 
Группа: Members
Зарегистрирован: 29-10-2012
Сообщений: 4
UA: Firefox 16.0

Re: Вопрос по существу

Ага ;) и мне подскажешь если решишь ? хорошо !


pocherk<dote>biz

Отсутствует

 

№515-11-2012 15:36:08

SunnyDay
Участник
 
Группа: Members
Зарегистрирован: 09-07-2009
Сообщений: 44
UA: Firefox 16.0

Re: Вопрос по существу

уж не знаю что есть require("widget") и require("page-mod") но предполагаю, что у объекта, который ты называешь "виджет" есть собственный документ, и при инъекции document.getElementById он ищет именно в этом документе.
Тем более если работает конструкция (а также если запощеный тобой JS-код внутри расширения):

Выделить код

Код:

test = "Page matches ruleset";
pageMod.PageMod({
  include: "*.org",
  contentScript: 'window.alert(test);'
});

это означает только одно - что документ для этого "виджета" является корневым документом браузера Firefox - естественно скрипт там не найдёт поля логина и пароля.

Если я неправ - обобщи проблемму, напиши хотябы где и как выполняются скрипты которые ты запостил, я вот например не знаю что за класс "page-mod" , "widget", и функция require , и 100 лет бы не знал)

Отредактировано SunnyDay (15-11-2012 15:37:50)

Отсутствует

 

Board footer

Powered by PunBB
Modified by Mozilla Russia
Copyright © 2004–2020 Mozilla Russia GitHub mark
Язык отображения форума: [Русский] [English]