aboutsummaryrefslogtreecommitdiff
path: root/files/ru/nsiobserver/index.html
blob: 75da303f26e53f9990f3ff23d97ec99a9049a4c6 (plain)
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
56
57
58
59
60
61
62
63
64
65
66
67
68
---
title: nsIObserver
slug: nsIObserver
tags:
  - Интерфейсы
  - 'Интерфейсы:Frozen'
  - Справочник_XPCOM_API
translation_of: Mozilla/Tech/XPCOM/Reference/Interface/nsIObserver
---
<p>« <a href="/ru/docs/%d0%a1%d0%bf%d1%80%d0%b0%d0%b2%d0%be%d1%87%d0%bd%d0%b8%d0%ba_XPCOM_API">Справочник XPCOM API</a></p>
<h3 id=".D0.9A.D1.80.D0.B0.D1.82.D0.BA.D0.BE.D0.B5_.D0.BE.D0.BF.D0.B8.D1.81.D0.B0.D0.BD.D0.B8.D0.B5" name=".D0.9A.D1.80.D0.B0.D1.82.D0.BA.D0.BE.D0.B5_.D0.BE.D0.BF.D0.B8.D1.81.D0.B0.D0.BD.D0.B8.D0.B5">Краткое описание</h3>
<p><code>nsIObserver</code> обеспечивает объекту возможность принимать сообщения. Такие сообщения обычно (но не всегда) рассылаются с помощью интерфейса <a href="ru/NsIObserverService">nsIObserverService</a>.</p>
<p></p><div style="border: solid #ddd 2px; margin-bottom: 12px;">
<div style="background: #eee; padding: 2px;"><code><a href="https://dxr.mozilla.org/mozilla-central/source/xpcom/ds/nsIObserver.idl" rel="custom">xpcom/ds/nsIObserver.idl</a></code><span style="text-align: right; float: right;"><a href="/ru/docs/Interfaces/About_Scriptable_Interfaces" style="color: #00cc00; font-weight: 700;">Со скриптами</a></span></div>
<span style="padding: 4px 2px;">

<i>Please add a summary to this article.</i>
</span>

<div style="background: #eee; padding: 2px;">
<span> </span>
<span style="text-align: right; float: right;">Последнее изменение в Gecko 0.9.6 </span></div>
</div><p></p>
<h3 id=".D0.9A.D0.BE.D0.B4_.D0.B8.D0.BD.D1.82.D0.B5.D1.80.D1.84.D0.B5.D0.B9.D1.81.D0.B0" name=".D0.9A.D0.BE.D0.B4_.D0.B8.D0.BD.D1.82.D0.B5.D1.80.D1.84.D0.B5.D0.B9.D1.81.D0.B0">Код интерфейса</h3>
<pre>[scriptable, uuid(DB242E01-E4D9-11d2-9DDE-000064657374)]
interface nsIObserver : nsISupports
{
    void observe( in nsISupports aSubject,
                  in string      aTopic,
                  in wstring     aData );
};
</pre>
<h3 id=".D0.9C.D0.B5.D1.82.D0.BE.D0.B4.D1.8B" name=".D0.9C.D0.B5.D1.82.D0.BE.D0.B4.D1.8B">Методы</h3>
<h4 id="observe" name="observe">observe</h4>
<pre>void observe( in nsISupports aSubject,
              in string      aTopic,
              in wstring     aData );
</pre>
<p>Метод <code>observe</code> вызывается тогда, когда приходит сообщение на ту тему, для прослушивания которой объект был зарегистрирован.</p>
<p>Обычно, в <code>aSubject</code> содержится объект, в результате изменения или другого действия над которым было создано полученное сообщение. Параметр <code>aTopic</code> определяет тип действия или изменения. А необязательный параметр <code>aData</code> и другие данные дополняют информацию о совершенном действии или изменении.</p>
<p>Конкретные значения, а так же смысл переданных параметров бывают разными, в зависимости от того где был зарегистрирован приемник и какая тема прослушивается.</p>
<p>Конкретный пример использования интерфейса <code>nsIObserver</code> может быть настроен на получение множества типов сообщений, и может вести себя по-разному в зависимости от переданных параметров. Чаще всего, основной параметр для выбора дальнейших действий — это <code>aTopic</code>, и в коде надо учитывать, что метод может быть вызван с неизвестным на момент написания значением параметра <code>aTopic</code>.</p>
<p>Так как система, обслуживающая прием сообщений, может вызывать конкретный приемник в разных контекстах, настоятельно рекомендуется не добавлять и не удалять приеники непосредственно в момент вызова метода <code>observe</code>.</p>
<h3 id=".D0.A1.D0.B2.D1.8F.D0.B7.D0.B0.D0.BD.D0.BD.D1.8B.D0.B5_.D0.B8.D0.BD.D1.82.D0.B5.D1.80.D1.84.D0.B5.D0.B9.D1.81.D1.8B" name=".D0.A1.D0.B2.D1.8F.D0.B7.D0.B0.D0.BD.D0.BD.D1.8B.D0.B5_.D0.B8.D0.BD.D1.82.D0.B5.D1.80.D1.84.D0.B5.D0.B9.D1.81.D1.8B">Связанные интерфейсы</h3>
<p><a href="ru/NsIObserverService">nsIObserverService</a></p>
<h3 id=".D0.9F.D1.80.D0.B8.D0.BC.D0.B5.D1.80_.D0.BA.D0.BE.D0.B4.D0.B0" name=".D0.9F.D1.80.D0.B8.D0.BC.D0.B5.D1.80_.D0.BA.D0.BE.D0.B4.D0.B0">Пример кода</h3>
<p>Следующий пример демонстрирует применение интерфейса <code>nsIObserver</code>, который позволяет зарегистрировать объект в системе пользовательских настроек для получения сообщений об изменении каких-либо значений (полный код примера и дополнительную информацию о системе настроек см. на странице <a class="external" href="http://kb.mozillazine.org/Dev_:_Using_preferences#Using_preferences_observers">Использование настроек</a> из MozillaZine).</p>
<pre>var prefObserver = {
  // nsIObserver
  observe: function (aSubject, aTopic, aData) {
    if (aTopic == "nsPref:changed") { // observe preference changes
      // aData contains the name of the changed preference
      dump(aData+" changed!");
    }
  },

  QueryInterface: function(aIID) {
    if(!aIID.equals(CI.nsISupports) &amp;&amp; !aIID.equals(CI.nsIObserver))
      throw CR.NS_ERROR_NO_INTERFACE;
    return this;
  }
};
</pre>
<h3 id=".D0.A1.D0.BC._.D1.82.D0.B0.D0.BA.D0.B6.D0.B5" name=".D0.A1.D0.BC._.D1.82.D0.B0.D0.BA.D0.B6.D0.B5">См. также</h3>
<ul>
 <li><a class="external" href="http://kb.mozillazine.org/Using_observers">Применение приемников</a>.</li>
</ul>
<p></p>