1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
|
---
title: FAQ по расширениям
slug: FAQ_по_расширениям
tags:
- Расширения
translation_of: Archive/Mozilla/Extension_Frequently_Asked_Questions
---
<p>Это список ответов на наиболее часто возникающие вопросы при разработке расширеий. В основном они касаются Firefox, однако в большинстве своем могут быть распространены и на SeaMonkey, Thunderbird и другие приложения.</p>
<p>Если вы ищите руководство к началу работы, посмотрите статью <a href="/ru/Создание_расширения" title="ru/Создание_расширения">Создание расширения</a> или <a class="external" href="http://kb.mozillazine.org/Getting_started_with_extension_development">MozillaZine's Getting started tutorial</a>. Попробуйте <a class="external" href="http://ted.mielczarek.org/code/mozilla/extensionwiz/">мастер расширений</a>, чтобы сгенерировать шаблон и начать с работать над расширением.</p>
<p>Убедитесь, что <a href="/ru/Настройка_среды_разработки_расширений" title="ru/Настройка_среды_разработки_расширений"> настроили Firefox для разработки расширений</a>.</p>
<h3 id=".D0.9E.D1.82.D0.BB.D0.B0.D0.B4.D0.BA.D0.B0">Отладка</h3>
<p>Установите <a href="/ru/Настройка_среды_разработки_расширений#.D0.9D.D0.B0.D1.81.D1.82.D1.80.D0.BE.D0.B9.D0.BA.D0.B8_Firefox_.D0.B4.D0.BB.D1.8F_.D1.80.D0.B0.D0.B7.D1.80.D0.B0.D0.B1.D0.BE.D1.82.D0.BA.D0.B8" title="ru/Настройка_среды_разработки_расширений#.D0.9D.D0.B0.D1.81.D1.82.D1.80.D0.BE.D0.B9.D0.BA.D0.B8_Firefox_.D0.B4.D0.BB.D1.8F_.D1.80.D0.B0.D0.B7.D1.80.D0.B0.D0.B1.D0.BE.D1.82.D0.BA.D0.B8"> рекомендуемые настройки</a> для удобства отладки своего расширения.</p>
<p><a href="/ru/Настройка_среды_разработки_расширений#.D0.A0.D0.B0.D1.81.D1.88.D0.B8.D1.80.D0.B5.D0.BD.D0.B8.D1.8F_.D0.B4.D0.BB.D1.8F_.D1.80.D0.B0.D0.B7.D1.80.D0.B0.D0.B1.D0.BE.D1.82.D0.BA.D0.B8" title="ru/Настройка_среды_разработки_расширений#.D0.A0.D0.B0.D1.81.D1.88.D0.B8.D1.80.D0.B5.D0.BD.D0.B8.D1.8F_.D0.B4.D0.BB.D1.8F_.D1.80.D0.B0.D0.B7.D1.80.D0.B0.D0.B1.D0.BE.D1.82.D0.BA.D0.B8"> Здесь</a> приведен список расширений, призванных помочь вам при отладке.</p>
<h3 id=".D0.A0.D0.B0.D1.81.D1.88.D0.B8.D1.80.D0.B5.D0.BD.D0.B8.D0.B5_.D0.BD.D0.B5_.D1.80.D0.B0.D0.B1.D0.BE.D1.82.D0.B0.D0.B5.D1.82.2C_.D0.BD.D0.BE_.D0.BD.D0.B5_.D0.B2.D0.B8.D0.B6.D1.83_.D0.BE.D1.88.D0.B8.D0.B1.D0.BE.D0.BA_.D0.B2_.D0.BA.D0.BE.D0.BD.D1.81.D0.BE.D0.BB.D0.B8">Расширение не работает, но не вижу ошибок в консоли</h3>
<p>Установите в настройках (<a class="external" href="http://www.mozilla.org/support/firefox/edit">about:config</a>) опцию</p>
<pre class="eval">javascript.options.showInConsole = true
</pre>
<p>Это приведет к тому, что ошибки JavaScript будут выводиться в консоль ошибок.</p>
<h3 id=".D0.9A.D0.B0.D0.BA_.D0.B2.D1.8B.D0.B2.D0.B5.D1.81.D1.82.D0.B8_.D1.82.D0.B5.D0.BA.D1.81.D1.82_.D0.B8.D0.B7_.D0.BA.D0.BE.D0.B4.D0.B0_.D1.80.D0.B0.D1.81.D1.88.D0.B8.D1.80.D0.B5.D0.BD.D0.B8.D1.8F">Как вывести текст из кода расширения</h3>
<p>Кроме alert(), можно воспользоваться <a href="/en/DOM:window.dump">dump()</a>, <a href="/en/Components.utils.reportError">Components.utils.reportError()</a> или <a href="/en/nsIConsoleService">the nsIConsoleService</a>. Можете попробовать также расширение <a class="link-https" href="https://addons.mozilla.org/en-US/firefox/216">Venkman JavaScript Debugger</a>.</p>
<h3 id=".D0.9F.D0.BE.D1.87.D0.B5.D0.BC.D1.83_.D0.BC.D0.BE.D1.8F_.D0.BF.D1.80.D0.BE.D0.B3.D1.80.D0.B0.D0.BC.D0.BC.D0.B0_.D0.BD.D0.B5_.D1.80.D0.B0.D0.B1.D0.BE.D1.82.D0.B0.D0.B5.D1.82.3F">Почему моя программа не работает?</h3>
<p>При возникновении проблем прежде всего изучите консоль ошибок.</p>
<p>Частой ошибкой является обращение к узлам DOM окна до его полной загрузки. Это может случиться, если вы поместите такой код вне каких-либо функций (т.е. он выполнится при первом же просмотре скрипта исполнительной системой JavaScript).Если вам необходимо что-либо сделать сразу же при загрузке браузера, оформите эти действия в функцию и поставьте ее обработчиком события <code>load</code>:</p>
<pre class="eval">function onBrowserStartup(evt){
//код, выполняющийся при загрузке браузера
}
window.addEventListener("load", onBrowserStartup, false);
</pre>
<h3 id=".D0.9A.D0.B0.D0.BA_.D0.BF.D0.BE.D0.BB.D1.83.D1.87.D0.B8.D1.82.D1.8C_.D0.B4.D0.BE.D1.81.D1.82.D1.83.D0.BF_.D0.BA_.D0.B2.D0.B5.D0.B1-.D1.81.D1.82.D1.80.D0.B0.D0.BD.D0.B8.D1.86.D0.B5.3F">Как получить доступ к веб-странице?</h3>
<p>Для получить доступ к загруженной странице из оверлея для <code>browser.xul</code>, надо воспользоваться <code>content.document</code> вместо привычного <code>document</code>. Для получения дополнительной информации смотрите статью <a href="/en/Working_with_windows_in_chrome_code#Content windows">Работы с окнами в коде chrome</a>.</p>
<p>Кроме того, по умолчанию <a href="/en/XPCNativeWrapper">en:XPCNativeWrapper</a> ограждает вас от доступа к определенным скриптами объектам на веб-странице и от совершению не которых других вещей.</p>
<h3 id=".D0.9D.D0.B5.D0.BF.D0.BE.D0.BD.D1.8F.D1.82.D0.BD.D1.8B.D0.B5_.D0.BE.D1.88.D0.B8.D0.B1.D0.BA.D0.B8_XML-.D0.BF.D0.B0.D1.80.D1.81.D0.B5.D1.80.D0.B0">Непонятные ошибки XML-парсера</h3>
<p>Часто ошибки XML-парсинга вызываются использованием спецсимволов XML, например & или <. Например, нельзя писать так</p>
<pre class="eval"><button oncommand="window.open('<span class="nowiki">http://example.com/</span>q?param1=value<strong>&param2</strong>=val2')"/>
</pre>
<p>и так</p>
<pre class="eval"><script>function lesser(a,b) { return <strong>a < b</strong> ? a : b; }</script>
</pre>
<p>Есть несколько путей решения этой проблемы:</p>
<ol> <li>заменить эти символы на соответствующие обзначения ("&" - "&amp", "<" - "&lt;" и т.п.).</li> <li>если заменить нельзя (например, это скрипт), замкните текст с этими символами в теги <code>CDATA</code></li>
</ol>
<pre><script><![CDATA[
function lesser(a,b) {
return a < b ? a : b;
}
]]></script>
</pre>
<p>или поместите скрипт в отдельный файл и подключите его в главном файле.</p>
<pre><script type="application/x-javascript" src="file.js"/></pre>
<h3 id=".D0.9F.D0.BE.D0.BB.D1.8C.D0.B7.D1.83.D0.B9.D1.82.D0.B5.D1.81.D1.8C_.D0.B3.D0.BE.D1.82.D0.BE.D0.B2.D1.8B.D0.BC_.D0.BA.D0.BE.D0.B4.D0.BE.D0.BC">Пользуйтесь готовым кодом</h3>
<p>Расширения поставляются в исходных кодах, поэтому вы вольны просматривать их код и узнавать, как они работают. XPI и JAR файлы являются просто переименованными zip-архивами.</p>
<h3 id=".D0.93.D0.B4.D0.B5_.D0.B5.D1.89.D0.B5_.D0.BC.D0.BE.D0.B6.D0.BD.D0.BE_.D0.BF.D0.BE.D0.BB.D1.83.D1.87.D0.B8.D1.82.D1.8C_.D0.B8.D0.BD.D1.84.D0.BE.D1.80.D0.BC.D0.B0.D1.86.D0.B8.D1.8E.3F">Где еще можно получить информацию?</h3>
<p>Просмотрите <a href="/Special:Tags?tag=Extensions&language=en">документацию, касающуюся расширений</a>, <a href="/en/Code_snippets">примеры кода</a>, <a class="external" href="http://kb.mozillazine.org/Category:Example_code">примеры кода на MozillaZine</a>.</p>
<p>Обратите внимание на <a href="/en/Extensions:Other_Resources">en: Extensions:Other Resources</a> и <a href="/en/Extensions:Community">en: Extensions:Community</a>.</p>
<p>{{ languages( { "de": "de/Erweiterungen_FAQ", "es": "es/Preguntas_frecuentes_sobre_Extensiones", "fr": "fr/Foire_aux_questions_sur_les_extensions", "it": "it/Domande_frequenti_sulle_Estensioni", "ja": "ja/Extension_Frequently_Asked_Questions", "pl": "pl/Cz\u0119sto_zadawane_pytania_dotycz\u0105ce_rozszerze\u0144", "en": "en/Extension_Frequently_Asked_Questions" } ) }}</p>
|