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
82
83
|
---
title: Manipulating bookmarks using Places
slug: Manipulating_bookmarks_using_Places
tags:
- Developing Mozilla
- Extensions
- Places
translation_of: Mozilla/Tech/Places/Manipulating_bookmarks_using_Places
---
<div>{{ Fx_minversion_header(3) }}</div>
<p>Places ブックマークサービスは、{{ Interface("nsINavBookmarksService") }} インタフェースによって提供されており、ブックマークやブックマークフォルダの作成、削除、操作を行うためのメソッドを提供します。この記事では、ブックマークサービスを利用して一般的なブックマーク管理作業を行う方法を、例を挙げて説明します。</p>
<h3 id=".E3.83.96.E3.83.83.E3.82.AF.E3.83.9E.E3.83.BC.E3.82.AF.E3.82.B5.E3.83.BC.E3.83.93.E3.82.B9.E3.81.AE.E5.88.9D.E6.9C.9F.E5.8C.96" name=".E3.83.96.E3.83.83.E3.82.AF.E3.83.9E.E3.83.BC.E3.82.AF.E3.82.B5.E3.83.BC.E3.83.93.E3.82.B9.E3.81.AE.E5.88.9D.E6.9C.9F.E5.8C.96">ブックマークサービスの初期化</h3>
<p>他の多くのインタフェースと同様に、ブックマークサービスを利用するには、まず以下のようにしてアクセスを取得する必要があります。</p>
<pre class="eval">var bmsvc = Components.classes["@mozilla.org/browser/nav-bookmarks-service;1"]
.getService(Components.interfaces.nsINavBookmarksService);
</pre>
<h3 id=".E3.83.96.E3.83.83.E3.82.AF.E3.83.9E.E3.83.BC.E3.82.AF.E3.83.95.E3.82.A9.E3.83.AB.E3.83.80.E3.81.AE.E6.96.B0.E8.A6.8F.E4.BD.9C.E6.88.90" name=".E3.83.96.E3.83.83.E3.82.AF.E3.83.9E.E3.83.BC.E3.82.AF.E3.83.95.E3.82.A9.E3.83.AB.E3.83.80.E3.81.AE.E6.96.B0.E8.A6.8F.E4.BD.9C.E6.88.90">ブックマークフォルダの新規作成</h3>
<p>新しいブックマークフォルダの作成は {{ Ifmethod("nsINavBookmarksService", "createFolder") }} メソッドを使って行います。例えば、ブックマークメニューに新しいフォルダを作成するには、以下のように記述します。</p>
<pre class="eval">var menuFolder = bmsvc.bookmarksMenuFolder; // ブックマークメニューフォルダ
var newFolderId = bmsvc.createFolder(menuFolder, "Folder name here", -1);
</pre>
<p>このコードでは、ブックマークメニューフォルダを特定し、それからそのフォルダに「Folder name here」という名前の新しいフォルダを作成しています。フォルダを挿入するインデックスとして -1 を指定することで、ブックマークのリストの最後にフォルダが置かれます。</p>
<p>このコードのうち、<code>bookmarksMenuFolder</code> を <code>toolbarFolder</code> に変更すれば、ブックマークツールバー上に簡単に新しいフォルダを挿入できます。</p>
<h3 id=".E3.83.96.E3.83.83.E3.82.AF.E3.83.9E.E3.83.BC.E3.82.AF.E3.81.AE.E6.96.B0.E8.A6.8F.E4.BD.9C.E6.88.90" name=".E3.83.96.E3.83.83.E3.82.AF.E3.83.9E.E3.83.BC.E3.82.AF.E3.81.AE.E6.96.B0.E8.A6.8F.E4.BD.9C.E6.88.90">ブックマークの新規作成</h3>
<p>新しいブックマーク作成には {{ Ifmethod("nsINavBookmarksService", "insertBookmark") }} を使用します。ブックマークの URI は {{ Interface("nsIURI") }} オブジェクトを使って指定する必要があります。</p>
<pre class="eval">var ios = Components.classes["@mozilla.org/network/io-service;1"]
.getService(Components.interfaces.nsIIOService);
var uri = ios.newURI(<span class="nowiki">"http://google.com/"</span>, null, null);
var newBkmkId = bmsvc.insertBookmark(newFolderId, uri, -1, "");
</pre>
<p>この例では、IO サービスをインスタンス化し、それを使って Google の Web サイトを参照する {{ Interface("nsIURI") }} を作成した上で、{{ Ifmethod("nsINavBookmarksService", "insertBookmark") }} を呼び出して Google のブックマークを作成し、それを <tt>newFolderId</tt> によって参照されているブックマークフォルダの最後に配置しています。</p>
<h3 id=".E3.83.96.E3.83.83.E3.82.AF.E3.83.9E.E3.83.BC.E3.82.AF.E3.82.A2.E3.82.A4.E3.83.86.E3.83.A0.E3.81.AE.E6.A4.9C.E7.B4.A2" name=".E3.83.96.E3.83.83.E3.82.AF.E3.83.9E.E3.83.BC.E3.82.AF.E3.82.A2.E3.82.A4.E3.83.86.E3.83.A0.E3.81.AE.E6.A4.9C.E7.B4.A2">ブックマークアイテムの検索</h3>
<p>サイトの URI を知っていて、それを指しているすべてのブックマークを検索したい場合は、{{ Ifmethod("nsINavBookmarksService", "getBookmarkIdsForURI") }} メソッドを使います。</p>
<pre class="eval">var ios = Components.classes["@mozilla.org/network/io-service;1"]
.getService(Components.interfaces.nsIIOService);
var uri = ios.newURI(<span class="nowiki">"http://google.com/"</span>, null, null);
var bookmarksArray = bmsvc.getBookmarkIdsForURI(uri, {});
</pre>
<p>このコードを実行すると、<tt>bookmarksArray</tt> という配列には、指定した URI (この場合は <span class="nowiki">"http://google.com"</span>) を参照しているすべてのブックマークの ID が含まれます。</p>
<h3 id=".E6.97.A2.E5.AD.98.E3.82.A2.E3.82.A4.E3.83.86.E3.83.A0.E3.81.AE.E6.93.8D.E4.BD.9C" name=".E6.97.A2.E5.AD.98.E3.82.A2.E3.82.A4.E3.83.86.E3.83.A0.E3.81.AE.E6.93.8D.E4.BD.9C">既存アイテムの操作</h3>
<p>既存のブックマークやブックマークフォルダに変更を加えるために使える便利なメソッドがいくつもあります。この章ではそのうちのいくつかを取り上げます。</p>
<h4 id=".E3.82.A2.E3.82.A4.E3.83.86.E3.83.A0.E3.81.AE.E5.90.8D.E5.89.8D" name=".E3.82.A2.E3.82.A4.E3.83.86.E3.83.A0.E3.81.AE.E5.90.8D.E5.89.8D">アイテムの名前</h4>
<p>ブックマークやブックマークフォルダの名前を変更するには、{{ Ifmethod("nsINavBookmarksService", "setItemTitle") }} メソッドを使います。</p>
<pre class="eval">bmsvc.setItemTitle(newBkmkId, "New title");
</pre>
<p>ここでは、<tt>newBkmkId</tt> という ID で参照されているアイテムの名前を「New title」に設定しています。</p>
<p>アイテムの既存のタイトルは {{ Ifmethod("nsINavBookmarksService", "getItemTitle") }} メソッドを使って取得できます。</p>
<pre class="eval">var thisTitle = bmsvc.getItemTitle(newBkmkId);
alert(thisTitle);
</pre>
<p>このコードでは、<tt>newBkmkId</tt> という ID で参照されているアイテムの名前が含まれた警告ダイアログが表示されます。</p>
<h4 id=".E3.82.A2.E3.82.A4.E3.83.86.E3.83.A0.E3.81.AE_URI" name=".E3.82.A2.E3.82.A4.E3.83.86.E3.83.A0.E3.81.AE_URI">アイテムの URI</h4>
<p>同様に、{{ Ifmethod("nsINavBookmarksService", "getBookmarkURI") }} メソッドを呼び出すことで、特定のブックマークアイテムに相当する URI を取得することができます。</p>
<pre class="eval">var thisURI = bmsvc.getBookmarkURI(newBkmkId);
alert(thisURI.spec);
</pre>
<p>ここまで説明したサンプルコードをすべて実行した場合、この出力結果は <span class="nowiki">"http://google.com"</span> になります。</p>
<p>{{ Ifmethod("nsINavBookmarksService", "changeBookmarkURI") }} メソッドを使えば、特定のブックマークアイテムの URI を更新できます。</p>
<pre class="eval">uri = ios.newURI(<span class="nowiki">"http://mozilla.com/"</span>, null, null);
bmsvc.changeBookmarkURI(newBkmkId, uri);
</pre>
<p>この例では、Goole の代わりに Mozilla の Web サイトを参照するよう、ブックマークを変更しています。</p>
<p>{{ Note("注釈、タグなど、他の情報はすべて、ブックマークの URI が変更されてもそのまま残ります。") }}</p>
<h3 id=".E3.81.82.E3.82.8B_URI_.E3.81.8C.E3.83.96.E3.83.83.E3.82.AF.E3.83.9E.E3.83.BC.E3.82.AF.E3.81.95.E3.82.8C.E3.81.A6.E3.81.84.E3.82.8B.E3.81.8B.E3.81.A9.E3.81.86.E3.81.8B.E3.81.AE.E7.A2.BA.E8.AA.8D" name=".E3.81.82.E3.82.8B_URI_.E3.81.8C.E3.83.96.E3.83.83.E3.82.AF.E3.83.9E.E3.83.BC.E3.82.AF.E3.81.95.E3.82.8C.E3.81.A6.E3.81.84.E3.82.8B.E3.81.8B.E3.81.A9.E3.81.86.E3.81.8B.E3.81.AE.E7.A2.BA.E8.AA.8D">ある URI がブックマークされているかどうかの確認</h3>
<p>例えば、既にブックマークされているサイトに対して新しいブックマークを作成するのを避けたい場合など、特定の URI が既にブックマークされているかどうかを確認するには、{{ Ifmethod("nsINavBookmarksService", "isBookmarked") }} メソッドを使います。</p>
<pre class="eval">var ios = Components.classes["@mozilla.org/network/io-service;1"]
.getService(Components.interfaces.nsIIOService);
var uri = ios.newURI(<span class="nowiki">"http://mozilla.com/"</span>, null, null);
if (!bmsvc.isBookmarked(uri)) {
bmsvc.insertBookmark(bmsvc.toolbarFolder, uri, -1, "Mozilla");
}
</pre>
<p>この例では、ユーザが既に Mozilla の Web サイトをブックマークしていないかどうかを確認し、もしされていない場合は作成して、ブックマークツールバー上に追加しています。</p>
<h3 id=".E3.81.82.E3.82.8B.E3.82.A2.E3.82.A4.E3.83.86.E3.83.A0.E3.82.92.E5.90.AB.E3.82.80.E3.83.95.E3.82.A9.E3.83.AB.E3.83.80.E3.81.AE.E6.A4.9C.E7.B4.A2" name=".E3.81.82.E3.82.8B.E3.82.A2.E3.82.A4.E3.83.86.E3.83.A0.E3.82.92.E5.90.AB.E3.82.80.E3.83.95.E3.82.A9.E3.83.AB.E3.83.80.E3.81.AE.E6.A4.9C.E7.B4.A2">あるアイテムを含むフォルダの検索</h3>
<p>あるアイテムが含まれるフォルダを知りたい場合は (これは {{ Ifmethod("nsINavBookmarksService", "getBookmarkIdsForURI") }} を使って特定の URI のブックマークを探した後などに特に便利な機能でしょう)、{{ Ifmethod("nsINavBookmarksService", "getFolderIdForItem") }} メソッドを使います。</p>
<pre class="eval">var parentFolderId = bmsvc.getFolderIdForItem(newBkmkId);
</pre>
<h3 id=".E9.96.A2.E9.80.A3.E8.A8.98.E4.BA.8B" name=".E9.96.A2.E9.80.A3.E8.A8.98.E4.BA.8B">関連記事</h3>
<ul>
<li>{{ Interface("nsINavBookmarksService") }}</li>
<li>{{ Interface("nsINavBookmarkObserver") }}</li>
<li><a href="ja/Places">Places</a></li>
</ul>
|