aboutsummaryrefslogtreecommitdiff
path: root/files/ko/places/accessing_bookmarks/index.html
blob: 76d52c1ab78b24a332ab4eaf9877deef591ad611 (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
69
70
71
72
73
74
75
76
77
78
79
80
81
---
title: Accessing Bookmarks
slug: Places/Accessing_Bookmarks
tags:
  - Firefox 3
  - Places
translation_of: Mozilla/Tech/Places/Manipulating_bookmarks_using_Places
---
<p></p>
<p>이 문서는 북마크 트리의 일부를 빠르게 구하기를 원하는 사람들을 위한 빠른 시작을 제공합니다. 북마크는 <a href="ko/Places/Query_System">플레이스 질의 시스템</a>을 이용하여 구할 수 있으며, 이는 더 일반적인 정보를 담고 있습니다. 북마크 서비스 API에 대해서는 <a href="ko/Places/Bookmarks_Service">북마크 서비스</a>를 참고하시기 바랍니다.</p>
<h3 id=".EC.A7.88.EC.9D.98.EC.99.80_.EC.98.B5.EC.85.98_.EA.B0.9C.EC.B2.B4_.EC.96.BB.EA.B8.B0" name=".EC.A7.88.EC.9D.98.EC.99.80_.EC.98.B5.EC.85.98_.EA.B0.9C.EC.B2.B4_.EC.96.BB.EA.B8.B0">질의와 옵션 개체 얻기</h3>
<p>모든 질의는 히스토리 서비스를 통해 실행합니다. 먼저 히스토리 서비스에서 빈 질의와 옵션 개체를 얻어야 합니다.</p>
<pre>var historyService = Components.classes["@mozilla.org/browser/nav-history-service;1"]
                               .getService(Components.interfaces.nsINavHistoryService);
var options = historyService.getNewQueryOptions();
var query = historyService.getNewQuery();
</pre>
<h3 id=".EC.9B.90.ED.95.98.EB.8A.94_.ED.8F.B4.EB.8D.94_.EC.B0.BE.EA.B8.B0" name=".EC.9B.90.ED.95.98.EB.8A.94_.ED.8F.B4.EB.8D.94_.EC.B0.BE.EA.B8.B0">원하는 폴더 찾기</h3>
<p>알려진 폴더 ID는 북마크 서비스에서 구할 수 있습니다. <code><a href="https://dxr.mozilla.org/mozilla-central/source//toolkit/components/places/public/nsINavBookmarksService.idl" rel="custom">/toolkit/components/places/public/nsINavBookmarksService.idl</a></code>에 정의된 속성은 <code>bookmarksMenuFolder</code>, <code>tagsFolder</code>, <code>unfiledBookmarksFolder</code>, <code>toolbarFolder</code>입니다. 이전 질의에서 폴더 ID를 얻을 수도 있습니다.</p>
<p>이 예제는 북마크 도구 막대의 ID를 얻는 것입니다.</p>
<pre>var bookmarksService = Components.classes["@mozilla.org/browser/nav-bookmarks-service;1"]
                                 .getService(Components.interfaces.nsINavBookmarksService);
var toolbarFolder = bookmarksService.toolbarFolder;
</pre>
<p><code>placesRoot</code>는 전체 플레이스 계층 구조의 최상위 폴더입니다. 이는 사용자 데이터 뿐만 아니라 관리 데이터를 포함하고 있어서 질의에 사용하는 것은 바람직하지 않습니다.</p>
<h3 id=".EC.A7.88.EC.9D.98.EC.99.80_.EC.98.B5.EC.85.98_.EA.B0.9C.EC.B2.B4_.EC.B1.84.EC.9A.B0.EA.B8.B0" name=".EC.A7.88.EC.9D.98.EC.99.80_.EC.98.B5.EC.85.98_.EA.B0.9C.EC.B2.B4_.EC.B1.84.EC.9A.B0.EA.B8.B0">질의와 옵션 개체 채우기</h3>
<p>전체 북마크 트리를 원하면 그룹화 옵션 <code>GROUP_BY_FOLDER</code>을 사용해야 합니다. 현재, 질의 시스템은 이 플래그가 필요하지 않으며 정확하게 한 폴더의 내용을 요청하면 항상 계층 구조를 반환합니다. 이는 <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=331487" title="Fix GROUP_BY_FOLDER in query system">bug 331487</a>입니다. 버그가 수정되면 <code>GROUP_BY_FOLDER</code>이 없는 북마크 질의는 모든 폴더와 서브폴더에서 질의에 부합하는 모든 북마크의 단순 목록을 반환할 것입니다.</p>
<p>통상의 북마크 질의에서 여러분은 하나의 최상위 폴더를 갖습니다. 질의 개체에서 이 폴더는 <code>setFolders</code>에 주어집니다.</p>
<pre>options.setGroupingMode([options.GROUP_BY_FOLDER],1);
query.setFolders([toolbarFolder], 1);
</pre>
<h3 id=".EC.A7.88.EC.9D.98_.EC.8B.A4.ED.96.89.ED.95.98.EA.B8.B0" name=".EC.A7.88.EC.9D.98_.EC.8B.A4.ED.96.89.ED.95.98.EA.B8.B0">질의 실행하기</h3>
<p><code>executeQuery</code><code>executeQueries</code> 함수는 질의 결과를 포함한 <code><a href="/ko/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsINavHistoryResult" title="">nsINavHistoryResult</a></code> 개체를 반환합니다.</p>
<pre>var result = historyService.executeQuery(query, options);
</pre>
<h3 id=".EA.B2.B0.EA.B3.BC_.EC.96.BB.EA.B8.B0" name=".EA.B2.B0.EA.B3.BC_.EC.96.BB.EA.B8.B0">결과 얻기</h3>
<p>(예제와 같이) 키워드나 날짜 범위와 같은 고급 매개 변수가 없이 폴더로 분류된 딱 하나의 폴더를 질의할 때, 결과의 <code>root</code>는 폴더에 해당하는 <code><a href="/ko/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsINavHistoryContainerResultNode" title="">nsINavHistoryContainerResultNode</a></code>가 됩니다. 질의가 복잡하거나 <code>GROUP_BY_FOLDER</code>를 사용하지 않았다면 루트는 <code><a href="/ko/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsINavHistoryQueryResultNode" title="">nsINavHistoryQueryResultNode</a></code>가 됩니다.</p>
<p>결과 콘테이너의 자식을 접근하기 전에 먼저 그것을 열고 나서 자식을 탐색할 수 있습니다. 콘테이너가 열려 있는 동안 북마크 시스템의 공지를 듣고 자신을 최신 상태로 유지하게 됩니다. 작업을 마치면 꼭 콘테이너를 닫아 자원을 해제하십시오. 그렇지 않으면 콘테이너는 계속 알림을 받고 자신을 갱신하여 전체 브라우저를 느리게 합니다.</p>
<pre>var rootNode = result.root;
rootNode.containerOpen = true;

// iterate over the immediate children of this folder and dump to console
for (var i = 0; i &lt; rootNode.childCount; i ++) {
  var node = rootNode.getChild(i);
  dump("Child: " + node.title + "\n");
}

// close a container after using it!
rootNode.containerOpen = false;
</pre>
<p><code>RESULT_TYPE_FOLDER</code> 형식이나 다른 형식의 노드를 만나면 이 폴더를 열고 계층 구조의 아래로 내려갈 수 있습니다. 여러 가지 결과 형식을 이해하려면 <a href="ko/Places/Query_System">플레이스:질의 시스템</a>의 "결과 이용하기" 섹션을 참고하시기 바랍니다.</p>
<h3 id=".EC.A0.84.EC.B2.B4_.EC.BD.94.EB.93.9C" name=".EC.A0.84.EC.B2.B4_.EC.BD.94.EB.93.9C">전체 코드</h3>
<pre>var historyService = Components.classes["@mozilla.org/browser/nav-history-service;1"]
                               .getService(Components.interfaces.nsINavHistoryService);
var options = historyService.getNewQueryOptions();
var query = historyService.getNewQuery();

var bookmarksService = Components.classes["@mozilla.org/browser/nav-bookmarks-service;1"]
                                 .getService(Components.interfaces.nsINavBookmarksService);
var toolbarFolder = bookmarksService.toolbarFolder;

//comment out the next line for now; the bug hasn't been fixed; final version should include the next line
options.setGroupingMode([options.GROUP_BY_FOLDER],1);
query.setFolders([toolbarFolder], 1);

var result = historyService.executeQuery(query, options);
var rootNode = result.root;
rootNode.containerOpen = true;

// iterate over the immediate children of this folder and dump to console
for (var i = 0; i &lt; rootNode.childCount; i ++) {
  var node = rootNode.getChild(i);
  dump("Child: " + node.title + "\n");
}

// close a container after using it!
rootNode.containerOpen = false;
</pre>
<div class="noinclude">
  </div>
<p></p>