>Форум Mozilla Россия http://forum.mozilla-russia.org/index.php >Разработка http://forum.mozilla-russia.org/viewforum.php?id=18 >Вопрос по существу http://forum.mozilla-russia.org/viewtopic.php?id=54063 |
optical > 06-03-2012 00:54:14 |
Итак, вот кусок кода, который работает при загрузке страницы и вбивает в поля 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';"}); } }); |
l2cri > 30-10-2012 11:46:32 |
Я тоже с такой же проблемой столкнулся. Вся проблема в том 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 |
softter > 08-11-2012 20:04:08 |
l2cri, спасибо, а то я уже весь мозг сломал не мог понять в чем проблема, буду разбираться. |
l2cri > 13-11-2012 09:53:01 |
Ага и мне подскажешь если решишь ? хорошо ! |
SunnyDay > 15-11-2012 15:36:08 |
уж не знаю что есть require("widget") и require("page-mod") но предполагаю, что у объекта, который ты называешь "виджет" есть собственный документ, и при инъекции document.getElementById он ищет именно в этом документе. Выделить код Код:test = "Page matches ruleset"; pageMod.PageMod({ include: "*.org", contentScript: 'window.alert(test);' }); это означает только одно - что документ для этого "виджета" является корневым документом браузера Firefox - естественно скрипт там не найдёт поля логина и пароля. Если я неправ - обобщи проблемму, напиши хотябы где и как выполняются скрипты которые ты запостил, я вот например не знаю что за класс "page-mod" , "widget", и функция require , и 100 лет бы не знал) |