>Форум Mozilla Россия http://forum.mozilla-russia.org/index.php >Разработка http://forum.mozilla-russia.org/viewforum.php?id=18 >Элемент SCRIPT в странице, который ссылается на chrome://blablabla http://forum.mozilla-russia.org/viewtopic.php?id=36990 |
SunnyDay > 09-07-2009 17:05:20 |
Итак, я столкнулся с такой проблеммой, мне нужно модифицировать страницу плагином таким образом: Выделить код Код:var scre = doc.createElement("SCRIPT"); scre.setAttribute("src", "chrome://erdel/content/CTB_Modifier.js"); doc.body.appendChild(scre); Всё бы ничего но такой хромовский скрипт в конечной странице не работает, потому что он ссылается на хромовский адрес chrome://erdel/content/CTB_Modifier.js. Первый раз когда я столкнулся с подобной штукой я вынес скрипт на внешний сервер, и подключал его: Выделить код Код:var scre = doc.createElement("SCRIPT"); scre.setAttribute("src", "http://blablabla"); doc.body.appendChild(scre); Но это только временное решение, подскажите, как заинклюдить хромовский скрипт внутри страницы, и можно ли это вообще сделать? Выделить код Код:var scri = frdoc.createElement("SCRIPT"); //location='/map.php?action=con&con=&r='+encode64(event.x+':'+event.y); scri.innerHTML = "..."; frdoc.body.appendChild(scri); но если в код скрипта достаточно объёмный, то innerHTML получать геморно - разве что аякс запросом к chrome. Нужно мне это для того чтобы подменить событие нажатия некоторых кнопок, на своё событие. |
Lynn > 09-07-2009 17:09:33 |
Эээ, я правильно понимаю, что вы пишите расширение, которое добавляет на страницу ещё один скрипт? |
Infocatcher > 09-07-2009 17:22:02 |
https://developer.mozilla.org/En/Chrome … accessible Хотя лучше и правда в сторону Greasemonkey посмотреть – там, кажется, evalInSandbox используется. |
SunnyDay > 09-07-2009 17:45:45 |
Infocatcher Infocatcher |
Lynn > 09-07-2009 17:51:47 |
гугл вам в помощь |
SunnyDay > 09-07-2009 17:59:09 |
Lynn я уже посмотрел, это плагин, не мой, а я программист, и пишу свой плагин, который не должен зависеть от того, установлен ли GreaseMonkey, или нет |
Lynn > 09-07-2009 18:20:06 |
Ну тогда примерно так: Выделить код Код:var x = function() { // тут код скрипта, например alert(42); } var scri = frdoc.createElement("SCRIPT") scri.innerHTML = "(" + x.toSource() + ")()" frdoc.body.appendChild(scri) |
SunnyDay > 09-07-2009 18:24:02 |
Lynn спасибо большое! Вот метод toSource() я незнал, в принципе он то мне и нужен, спасибо ) |