diff --git a/.prettierignore b/.prettierignore index 8f059e3e9a876b..c7a444bf01c17f 100644 --- a/.prettierignore +++ b/.prettierignore @@ -42,10 +42,7 @@ build/ /files/es/web/javascript/reference/**/*.md # ja -/files/ja/mozilla/**/*.md /files/ja/mdn/**/*.md -/files/ja/mozilla/add-ons/**/*.md -/files/ja/mozilla/add-ons/webextensions/api/**/*.md /files/ja/web/api/**/*.md /files/ja/web/css/**/*.md /files/ja/web/html/**/*.md diff --git a/files/ja/mozilla/add-ons/webextensions/add_a_button_to_the_toolbar/index.md b/files/ja/mozilla/add-ons/webextensions/add_a_button_to_the_toolbar/index.md index cbf693652b24e2..22363f94eebe82 100644 --- a/files/ja/mozilla/add-ons/webextensions/add_a_button_to_the_toolbar/index.md +++ b/files/ja/mozilla/add-ons/webextensions/add_a_button_to_the_toolbar/index.md @@ -23,7 +23,6 @@ WebExtension API では、こうしたボタンの種類は "ブラウザーア ```json { - "description": "Demonstrating toolbar buttons", "manifest_version": 2, "name": "button-demo", @@ -39,7 +38,6 @@ WebExtension API では、こうしたボタンの種類は "ブラウザーア "32": "icons/page-32.png" } } - } ``` @@ -59,7 +57,7 @@ These icons are from the [bitsies!](https://www.iconfinder.com/iconsets/bitsies) ```js function openPage() { browser.tabs.create({ - url: "https://developer.mozilla.org" + url: "https://developer.mozilla.org", }); } @@ -70,7 +68,7 @@ browser.browserAction.onClicked.addListener(openPage); ここで完全な拡張機能は次のようです: -```html +```plain button/ icons/ page-16.png @@ -89,7 +87,6 @@ button/ ```json { - "description": "Demonstrating toolbar buttons", "manifest_version": 2, "name": "button-demo", @@ -103,7 +100,6 @@ button/ "32": "icons/page-32.png" } } - } ``` @@ -116,21 +112,20 @@ button/ さてポップアップを作らねばなりません。"popup" というディレクトリーを作成してその中に "choose_page.html" というファイルを作ります。中身は次の通り: ```html - + - - + + - -
developer.mozilla.org
-
support.mozilla.org
-
addons.mozilla.org
- - - + +
developer.mozilla.org
+
support.mozilla.org
+
addons.mozilla.org
+ + ``` @@ -139,7 +134,8 @@ button/ "popup" ディレクトリーに"choose_page.css" というファイルを作って、次の中身を入れます: ```css -html, body { +html, +body { width: 300px; } @@ -152,7 +148,7 @@ html, body { } .page-choice:hover { - background-color: #CFF2F2; + background-color: #cff2f2; } ``` @@ -161,16 +157,15 @@ html, body { 次に、"popup" ディレクトリーに"choose_page.js" ファイルを作成し、次の中身を入れます: ```js -document.addEventListener("click", function(e) { +document.addEventListener("click", function (e) { if (!e.target.classList.contains("page-choice")) { return; } var chosenPage = "https://" + e.target.textContent; browser.tabs.create({ - url: chosenPage + url: chosenPage, }); - }); ``` diff --git a/files/ja/mozilla/add-ons/webextensions/api/alarms/create/index.md b/files/ja/mozilla/add-ons/webextensions/api/alarms/create/index.md index 54d7d1b9e32782..da64a18b0dd09c 100644 --- a/files/ja/mozilla/add-ons/webextensions/api/alarms/create/index.md +++ b/files/ja/mozilla/add-ons/webextensions/api/alarms/create/index.md @@ -11,9 +11,9 @@ slug: Mozilla/Add-ons/WebExtensions/API/alarms/create ```js browser.alarms.create( - name, // 文字列 - alarmInfo // オブジェクト -) + name, // 文字列 + alarmInfo, // オブジェクト +); ``` ### 引数 @@ -49,7 +49,7 @@ browser.alarms.create( const delayInMinutes = 5; chrome.alarms.create({ - delayInMinutes + delayInMinutes, }); ``` @@ -61,7 +61,7 @@ const periodInMinutes = 2; chrome.alarms.create("my-periodic-alarm", { delayInMinutes, - periodInMinutes + periodInMinutes, }); ``` @@ -73,7 +73,7 @@ const periodInMinutes = 2; chrome.alarms.create("my-periodic-alarm", { when, - periodInMinutes + periodInMinutes, }); ``` diff --git a/files/ja/mozilla/add-ons/webextensions/api/bookmarks/create/index.md b/files/ja/mozilla/add-ons/webextensions/api/bookmarks/create/index.md index 4561f54c6d7774..7f9bf3d45925eb 100644 --- a/files/ja/mozilla/add-ons/webextensions/api/bookmarks/create/index.md +++ b/files/ja/mozilla/add-ons/webextensions/api/bookmarks/create/index.md @@ -12,8 +12,8 @@ slug: Mozilla/Add-ons/WebExtensions/API/bookmarks/create ```js browser.bookmarks.create( bookmark, // CreateDetails - callback // 関数(省略可) -) + callback, // 関数(省略可) +); ``` ### 引数 @@ -40,10 +40,13 @@ function onBookmarkAdded(bookmarkItem) { console.log("Bookmark added with ID: " + bookmarkItem.id); } -chrome.bookmarks.create({ - title: "bookmarks.create() on MDN", - url: "https://developer.mozilla.org/Add-ons/WebExtensions/API/bookmarks/create" -}, onBookmarkAdded); +chrome.bookmarks.create( + { + title: "bookmarks.create() on MDN", + url: "https://developer.mozilla.org/Add-ons/WebExtensions/API/bookmarks/create", + }, + onBookmarkAdded, +); ``` {{WebExtExamples}} diff --git a/files/ja/mozilla/add-ons/webextensions/api/bookmarks/get/index.md b/files/ja/mozilla/add-ons/webextensions/api/bookmarks/get/index.md index 9ce9100f8a1c14..bf762b666dc951 100644 --- a/files/ja/mozilla/add-ons/webextensions/api/bookmarks/get/index.md +++ b/files/ja/mozilla/add-ons/webextensions/api/bookmarks/get/index.md @@ -12,8 +12,8 @@ slug: Mozilla/Add-ons/WebExtensions/API/bookmarks/get ```js browser.bookmarks.get( idOrIdList, // 文字列または文字列の配列 - callback // 関数 -) + callback, // 関数 +); ``` ### 引数 diff --git a/files/ja/mozilla/add-ons/webextensions/api/bookmarks/getchildren/index.md b/files/ja/mozilla/add-ons/webextensions/api/bookmarks/getchildren/index.md index b1d2798a145956..2e868f0a361828 100644 --- a/files/ja/mozilla/add-ons/webextensions/api/bookmarks/getchildren/index.md +++ b/files/ja/mozilla/add-ons/webextensions/api/bookmarks/getchildren/index.md @@ -11,9 +11,9 @@ slug: Mozilla/Add-ons/WebExtensions/API/bookmarks/getChildren ```js browser.bookmarks.getChildren( - id, // 文字列 - callback // 関数 -) + id, // 文字列 + callback, // 関数 +); ``` ### Parameters @@ -49,8 +49,8 @@ chrome.bookmarks.getChildren(bookmarkItemId, gotChildren); ```js function toggleBookmark(folderNode, title, url) { - chrome.bookmarks.getChildren(folderNode.id, function(results) { - let node = results.find(function(el) { + chrome.bookmarks.getChildren(folderNode.id, function (results) { + let node = results.find(function (el) { return el.title === title; }); @@ -63,7 +63,7 @@ function toggleBookmark(folderNode, title, url) { chrome.bookmarks.create({ parentId: folderNode.id, title: title, - url: url + url: url, }); } }); diff --git a/files/ja/mozilla/add-ons/webextensions/api/bookmarks/getrecent/index.md b/files/ja/mozilla/add-ons/webextensions/api/bookmarks/getrecent/index.md index c264ffc43ce3f9..6feeef626e4de5 100644 --- a/files/ja/mozilla/add-ons/webextensions/api/bookmarks/getrecent/index.md +++ b/files/ja/mozilla/add-ons/webextensions/api/bookmarks/getrecent/index.md @@ -12,8 +12,8 @@ slug: Mozilla/Add-ons/WebExtensions/API/bookmarks/getRecent ```js browser.bookmarks.getRecent( numberOfItems, // 整数 - callback // 関数 -) + callback, // 関数 +); ``` ### 引数 diff --git a/files/ja/mozilla/add-ons/webextensions/api/bookmarks/getsubtree/index.md b/files/ja/mozilla/add-ons/webextensions/api/bookmarks/getsubtree/index.md index 117b7c2be0db21..d192348697bfbf 100644 --- a/files/ja/mozilla/add-ons/webextensions/api/bookmarks/getsubtree/index.md +++ b/files/ja/mozilla/add-ons/webextensions/api/bookmarks/getsubtree/index.md @@ -13,9 +13,9 @@ slug: Mozilla/Add-ons/WebExtensions/API/bookmarks/getSubTree ```js browser.bookmarks.getSubTree( - id, // 文字列 - callback // 関数 -) + id, // 文字列 + callback, // 関数 +); ``` ### 引数 diff --git a/files/ja/mozilla/add-ons/webextensions/api/bookmarks/gettree/index.md b/files/ja/mozilla/add-ons/webextensions/api/bookmarks/gettree/index.md index b37c5bb1216b38..eb9630e5c913eb 100644 --- a/files/ja/mozilla/add-ons/webextensions/api/bookmarks/gettree/index.md +++ b/files/ja/mozilla/add-ons/webextensions/api/bookmarks/gettree/index.md @@ -11,8 +11,8 @@ slug: Mozilla/Add-ons/WebExtensions/API/bookmarks/getTree ```js browser.bookmarks.getTree( - callback // 関数 -) + callback, // 関数 +); ``` ### 引数 diff --git a/files/ja/mozilla/add-ons/webextensions/api/bookmarks/move/index.md b/files/ja/mozilla/add-ons/webextensions/api/bookmarks/move/index.md index 8a51fcb84a02e8..49b32f34a233e0 100644 --- a/files/ja/mozilla/add-ons/webextensions/api/bookmarks/move/index.md +++ b/files/ja/mozilla/add-ons/webextensions/api/bookmarks/move/index.md @@ -11,10 +11,10 @@ slug: Mozilla/Add-ons/WebExtensions/API/bookmarks/move ```js browser.bookmarks.move( - id, // 文字列 + id, // 文字列 destination, // オブジェクト - callback // 関数(省略可) -) + callback, // 関数(省略可) +); ``` ### 引数 @@ -57,10 +57,13 @@ browser.bookmarks.move(bookmarkID, { index: 0 }); ```js function moveToFolder(bookmarkId, destinationId) { - browser.bookmarks.move(bookmarkId, { parentId: destinationId }, - function(updatedNode) { - /* ブックマークの移動後に行う処理 */ - }); + browser.bookmarks.move( + bookmarkId, + { parentId: destinationId }, + function (updatedNode) { + /* ブックマークの移動後に行う処理 */ + }, + ); } ``` diff --git a/files/ja/mozilla/add-ons/webextensions/api/bookmarks/remove/index.md b/files/ja/mozilla/add-ons/webextensions/api/bookmarks/remove/index.md index 86aced591d2b17..2b020f13178261 100644 --- a/files/ja/mozilla/add-ons/webextensions/api/bookmarks/remove/index.md +++ b/files/ja/mozilla/add-ons/webextensions/api/bookmarks/remove/index.md @@ -13,9 +13,9 @@ slug: Mozilla/Add-ons/WebExtensions/API/bookmarks/remove ```js browser.bookmarks.remove( - id, // 文字列 - callback // 関数(省略可) -) + id, // 文字列 + callback, // 関数(省略可) +); ``` ### 引数 diff --git a/files/ja/mozilla/add-ons/webextensions/api/bookmarks/removetree/index.md b/files/ja/mozilla/add-ons/webextensions/api/bookmarks/removetree/index.md index 37b8104a2383f7..a9ff6c84ab3add 100644 --- a/files/ja/mozilla/add-ons/webextensions/api/bookmarks/removetree/index.md +++ b/files/ja/mozilla/add-ons/webextensions/api/bookmarks/removetree/index.md @@ -13,9 +13,9 @@ slug: Mozilla/Add-ons/WebExtensions/API/bookmarks/removeTree ```js browser.bookmarks.removeTree( - id, // 文字列 - callback // 関数(省略可) -) + id, // 文字列 + callback, // 関数(省略可) +); ``` ### 引数 diff --git a/files/ja/mozilla/add-ons/webextensions/api/bookmarks/search/index.md b/files/ja/mozilla/add-ons/webextensions/api/bookmarks/search/index.md index f514aa5947c37e..bdebcdb7e84fad 100644 --- a/files/ja/mozilla/add-ons/webextensions/api/bookmarks/search/index.md +++ b/files/ja/mozilla/add-ons/webextensions/api/bookmarks/search/index.md @@ -13,9 +13,9 @@ slug: Mozilla/Add-ons/WebExtensions/API/bookmarks/search ```js browser.bookmarks.search( - query, // 文字列またはオブジェクト - callback // 関数 -) + query, // 文字列またはオブジェクト + callback, // 関数 +); ``` ### 引数 @@ -76,7 +76,7 @@ function onGot(bookmarkItems) { } function checkActiveTab(tab) { - chrome.bookmarks.search({url: tab.url}, onGot); + chrome.bookmarks.search({ url: tab.url }, onGot); } chrome.browserAction.onClicked.addListener(checkActiveTab); diff --git a/files/ja/mozilla/add-ons/webextensions/api/bookmarks/update/index.md b/files/ja/mozilla/add-ons/webextensions/api/bookmarks/update/index.md index a1276df7c80c5c..4de2b411d955d0 100644 --- a/files/ja/mozilla/add-ons/webextensions/api/bookmarks/update/index.md +++ b/files/ja/mozilla/add-ons/webextensions/api/bookmarks/update/index.md @@ -13,10 +13,10 @@ slug: Mozilla/Add-ons/WebExtensions/API/bookmarks/update ```js browser.bookmarks.update( - id, // 文字列 + id, // 文字列 changes, // オブジェクト - callback // 関数(省略可) -) + callback, // 関数(省略可) +); ``` ### 引数 @@ -55,7 +55,7 @@ function updateFolders(items) { // only folders, so skip items with a `url` if (!item.url) { chrome.bookmarks.update(item.id, { - title: "Mozilla Developer Network (MDN)" + title: "Mozilla Developer Network (MDN)", }); } } diff --git a/files/ja/mozilla/add-ons/webextensions/api/browseraction/disable/index.md b/files/ja/mozilla/add-ons/webextensions/api/browseraction/disable/index.md index 2077d2adb358d7..5b5d7a61b3dd56 100644 --- a/files/ja/mozilla/add-ons/webextensions/api/browseraction/disable/index.md +++ b/files/ja/mozilla/add-ons/webextensions/api/browseraction/disable/index.md @@ -11,8 +11,8 @@ slug: Mozilla/Add-ons/WebExtensions/API/browserAction/disable ```js browser.browserAction.disable( - tabId // optional integer -) + tabId, // optional integer +); ``` ### パラメータ diff --git a/files/ja/mozilla/add-ons/webextensions/api/browseraction/onclicked/index.md b/files/ja/mozilla/add-ons/webextensions/api/browseraction/onclicked/index.md index 3625d3e3956d31..946bc522cc3d54 100644 --- a/files/ja/mozilla/add-ons/webextensions/api/browseraction/onclicked/index.md +++ b/files/ja/mozilla/add-ons/webextensions/api/browseraction/onclicked/index.md @@ -12,9 +12,9 @@ slug: Mozilla/Add-ons/WebExtensions/API/browserAction/onClicked ## 書式 ```js -browser.browserAction.onClicked.addListener(listener) -browser.browserAction.onClicked.removeListener(listener) -browser.browserAction.onClicked.hasListener(listener) +browser.browserAction.onClicked.addListener(listener); +browser.browserAction.onClicked.removeListener(listener); +browser.browserAction.onClicked.hasListener(listener); ``` イベントは3つの関数を持っています: diff --git a/files/ja/mozilla/add-ons/webextensions/api/browsersettings/newtabpageoverride/index.md b/files/ja/mozilla/add-ons/webextensions/api/browsersettings/newtabpageoverride/index.md index 8071a2dca331d8..b410444362f668 100644 --- a/files/ja/mozilla/add-ons/webextensions/api/browsersettings/newtabpageoverride/index.md +++ b/files/ja/mozilla/add-ons/webextensions/api/browsersettings/newtabpageoverride/index.md @@ -18,7 +18,7 @@ slug: Mozilla/Add-ons/WebExtensions/API/browserSettings/newTabPageOverride 現在の新規タブ URL を取得する: ```js -browser.browserSettings.newTabPageOverride.get({}).then(result => { +browser.browserSettings.newTabPageOverride.get({}).then((result) => { console.log(result.value); }); ``` diff --git a/files/ja/mozilla/add-ons/webextensions/api/browsingdata/removecache/index.md b/files/ja/mozilla/add-ons/webextensions/api/browsingdata/removecache/index.md index c3050ed0953fc1..4df95c07581431 100644 --- a/files/ja/mozilla/add-ons/webextensions/api/browsingdata/removecache/index.md +++ b/files/ja/mozilla/add-ons/webextensions/api/browsingdata/removecache/index.md @@ -15,8 +15,8 @@ slug: Mozilla/Add-ons/WebExtensions/API/browsingData/removeCache ```js var removing = browser.browsingData.removeCache( - removalOptions // RemovalOptions オブジェクト -) + removalOptions, // RemovalOptions オブジェクト +); ``` ### 引数 @@ -45,8 +45,7 @@ function onError(error) { console.error(error); } -browser.browsingData.removeCache({}). -then(onRemoved, onError); +browser.browsingData.removeCache({}).then(onRemoved, onError); ``` {{WebExtExamples}} diff --git a/files/ja/mozilla/add-ons/webextensions/api/clipboard/setimagedata/index.md b/files/ja/mozilla/add-ons/webextensions/api/clipboard/setimagedata/index.md index d67bb04b5bbcce..eedf5c84799742 100644 --- a/files/ja/mozilla/add-ons/webextensions/api/clipboard/setimagedata/index.md +++ b/files/ja/mozilla/add-ons/webextensions/api/clipboard/setimagedata/index.md @@ -21,7 +21,7 @@ Although this API is based on Chrome's [`clipboard.setImageData()`](https://deve ## 書式 ```js -browser.clipboard.setImageData(imageData, imageType) +browser.clipboard.setImageData(imageData, imageType); ``` ### パラメータ @@ -48,9 +48,9 @@ Copy a remote image: // * the host permission for "https://cdn.mdn.mozilla.net/*" // * the API permission "clipboardWrite" -fetch('https://cdn.mdn.mozilla.net/static/img/favicon144.png') -.then(response => response.arrayBuffer()) -.then(buffer => browser.clipboard.setImageData(buffer, 'png')); +fetch("https://cdn.mdn.mozilla.net/static/img/favicon144.png") + .then((response) => response.arrayBuffer()) + .then((buffer) => browser.clipboard.setImageData(buffer, "png")); ``` Copy an image that was bundled with the extension: @@ -58,9 +58,9 @@ Copy an image that was bundled with the extension: ```js // requires the API permission "clipboardWrite" -fetch(browser.runtime.getURL('image.png')) -.then(response => response.arrayBuffer()) -.then(buffer => browser.clipboard.setImageData(buffer, 'png')); +fetch(browser.runtime.getURL("image.png")) + .then((response) => response.arrayBuffer()) + .then((buffer) => browser.clipboard.setImageData(buffer, "png")); ``` {{WebExtExamples}} diff --git a/files/ja/mozilla/add-ons/webextensions/api/contentscripts/register/index.md b/files/ja/mozilla/add-ons/webextensions/api/contentscripts/register/index.md index 3618d418c19151..2c9814344420d3 100644 --- a/files/ja/mozilla/add-ons/webextensions/api/contentscripts/register/index.md +++ b/files/ja/mozilla/add-ons/webextensions/api/contentscripts/register/index.md @@ -15,8 +15,8 @@ manifest.json 内の [`content_scripts`](/ja/docs/Mozilla/Add-ons/WebExtensions/ ```js var registering = browser.contentScripts.register( - contentScriptOptions // object -) + contentScriptOptions, // object +); ``` ### パラメーター @@ -65,16 +65,15 @@ var registering = browser.contentScripts.register( ```js const defaultHosts = "*://*.org/*"; -const defaultCode = "document.body.innerHTML = '

このページは書き換えられました

'"; +const defaultCode = + "document.body.innerHTML = '

このページは書き換えられました

'"; async function register(hosts, code) { - return await browser.contentScripts.register({ matches: [hosts], - js: [{code}], - runAt: "document_idle" + js: [{ code }], + runAt: "document_idle", }); - } var registered = register(defaultHosts, defaultCode); @@ -84,10 +83,10 @@ var registered = register(defaultHosts, defaultCode); ```js const scriptObj = await browser.contentScripts.register({ - "js": [{file: "/content_scripts/example.js"}], - "matches": [""], - "allFrames": true, - "runAt": "document_start" + js: [{ file: "/content_scripts/example.js" }], + matches: [""], + allFrames: true, + runAt: "document_start", }); ``` diff --git a/files/ja/mozilla/add-ons/webextensions/api/devtools/inspectedwindow/eval/index.md b/files/ja/mozilla/add-ons/webextensions/api/devtools/inspectedwindow/eval/index.md index 28abcca50dcd8c..067eec5781f3e0 100644 --- a/files/ja/mozilla/add-ons/webextensions/api/devtools/inspectedwindow/eval/index.md +++ b/files/ja/mozilla/add-ons/webextensions/api/devtools/inspectedwindow/eval/index.md @@ -37,9 +37,9 @@ The script gets access to a number of objects that help the injected script inte ```js var evaluating = browser.devtools.inspectedWindow.eval( - expression, // string - options // object -) + expression, // string + options, // object +); ``` ### Parameters @@ -104,8 +104,7 @@ function handleResult(result) { const checkjQuery = "typeof jQuery != 'undefined'"; evalButton.addEventListener("click", () => { - browser.devtools.inspectedWindow.eval(checkjQuery) - .then(handleResult); + browser.devtools.inspectedWindow.eval(checkjQuery).then(handleResult); }); ``` @@ -132,8 +131,7 @@ function handleResult(result) { } evalButton.addEventListener("click", () => { - browser.devtools.inspectedWindow.eval(evalString) - .then(handleResult); + browser.devtools.inspectedWindow.eval(evalString).then(handleResult); }); ``` @@ -158,8 +156,7 @@ function handleResult(result) { } inspectButton.addEventListener("click", () => { - browser.devtools.inspectedWindow.eval(inspectString) - .then(handleResult); + browser.devtools.inspectedWindow.eval(inspectString).then(handleResult); }); ``` diff --git a/files/ja/mozilla/add-ons/webextensions/api/devtools/inspectedwindow/tabid/index.md b/files/ja/mozilla/add-ons/webextensions/api/devtools/inspectedwindow/tabid/index.md index fb391d0d8209a8..81e8949b37db3f 100644 --- a/files/ja/mozilla/add-ons/webextensions/api/devtools/inspectedwindow/tabid/index.md +++ b/files/ja/mozilla/add-ons/webextensions/api/devtools/inspectedwindow/tabid/index.md @@ -18,7 +18,7 @@ const scriptToAttach = "document.body.innerHTML = 'Hi from the devtools';"; attachContentScriptButton.addEventListener("click", () => { browser.runtime.sendMessage({ tabId: browser.devtools.inspectedWindow.tabId, - script: scriptToAttach + script: scriptToAttach, }); }); ``` @@ -28,7 +28,7 @@ attachContentScriptButton.addEventListener("click", () => { function handleMessage(request, sender, sendResponse) { browser.tabs.executeScript(request.tabId, { - code: request.script + code: request.script, }); } diff --git a/files/ja/mozilla/add-ons/webextensions/api/downloads/download/index.md b/files/ja/mozilla/add-ons/webextensions/api/downloads/download/index.md index 7136aef3a4f26f..da5eb2ee236b35 100644 --- a/files/ja/mozilla/add-ons/webextensions/api/downloads/download/index.md +++ b/files/ja/mozilla/add-ons/webextensions/api/downloads/download/index.md @@ -16,8 +16,8 @@ slug: Mozilla/Add-ons/WebExtensions/API/downloads/download ```js var downloading = browser.downloads.download( - options // object -) + options, // object +); ``` ### パラメータ @@ -71,9 +71,9 @@ function onFailed(error) { var downloadUrl = "https://example.org/image.png"; var downloading = browser.downloads.download({ - url : downloadUrl, - filename : 'my-image-again.png', - conflictAction : 'uniquify' + url: downloadUrl, + filename: "my-image-again.png", + conflictAction: "uniquify", }); downloading.then(onStartedDownload, onFailed); diff --git a/files/ja/mozilla/add-ons/webextensions/api/find/find/index.md b/files/ja/mozilla/add-ons/webextensions/api/find/find/index.md index 00fc8facbec668..2f2827e41d5bef 100644 --- a/files/ja/mozilla/add-ons/webextensions/api/find/find/index.md +++ b/files/ja/mozilla/add-ons/webextensions/api/find/find/index.md @@ -29,9 +29,9 @@ slug: Mozilla/Add-ons/WebExtensions/API/find/find ```js browser.find.find( - queryphrase, // string - options // optional object -) + queryphrase, // string + options, // optional object +); ``` ### Parameters @@ -129,8 +129,8 @@ Search for "banana" across all tabs (note that this requires the "tabs" [permiss ```js async function findInAllTabs(allTabs) { for (let tab of allTabs) { - let results = await browser.find.find("banana", {tabId: tab.id}); - console.log(`In page "${tab.url}": ${results.count} matches.`) + let results = await browser.find.find("banana", { tabId: tab.id }); + console.log(`In page "${tab.url}": ${results.count} matches.`); } } @@ -149,27 +149,26 @@ The background script: // background.js async function getContexts(matches) { - // get the active tab ID let activeTabArray = await browser.tabs.query({ - active: true, currentWindow: true + active: true, + currentWindow: true, }); let tabId = activeTabArray[0].id; // execute the content script in the active tab - await browser.tabs.executeScript(tabId, {file: "get-context.js"}); + await browser.tabs.executeScript(tabId, { file: "get-context.js" }); // ask the content script to get the contexts for us let contexts = await browser.tabs.sendMessage(tabId, { - ranges: matches.rangeData + ranges: matches.rangeData, }); for (let context of contexts) { console.log(context); } - } browser.browserAction.onClicked.addListener((tab) => { - browser.find.find("example", {includeRangeData: true}).then(getContexts); + browser.find.find("example", { includeRangeData: true }).then(getContexts); }); ``` @@ -180,9 +179,14 @@ The content script: * Get all the text nodes into a single array */ function getNodes() { - let walker = document.createTreeWalker(document, window.NodeFilter.SHOW_TEXT, null, false); + let walker = document.createTreeWalker( + document, + window.NodeFilter.SHOW_TEXT, + null, + false, + ); let nodes = []; - while(node = walker.nextNode()) { + while ((node = walker.nextNode())) { nodes.push(node); } @@ -196,7 +200,6 @@ function getNodes() { * of each node. */ function getContexts(ranges) { - let contexts = []; let nodes = getNodes(); @@ -229,21 +232,21 @@ The background script: // background.js async function redact(matches) { - // get the active tab ID let activeTabArray = await browser.tabs.query({ - active: true, currentWindow: true + active: true, + currentWindow: true, }); let tabId = activeTabArray[0].id; // execute the content script in the active tab - await browser.tabs.executeScript(tabId, {file: "redact.js"}); + await browser.tabs.executeScript(tabId, { file: "redact.js" }); // ask the content script to redact matches for us - await browser.tabs.sendMessage(tabId, {rects: matches.rectData}); + await browser.tabs.sendMessage(tabId, { rects: matches.rectData }); } browser.browserAction.onClicked.addListener((tab) => { - browser.find.find("banana", {includeRectData: true}).then(redact); + browser.find.find("banana", { includeRectData: true }).then(redact); }); ``` @@ -261,8 +264,8 @@ function redactRect(rect) { redaction.style.position = "absolute"; redaction.style.top = `${rect.top}px`; redaction.style.left = `${rect.left}px`; - redaction.style.width = `${rect.right-rect.left}px`; - redaction.style.height = `${rect.bottom-rect.top}px`; + redaction.style.width = `${rect.right - rect.left}px`; + redaction.style.height = `${rect.bottom - rect.top}px`; document.body.appendChild(redaction); } diff --git a/files/ja/mozilla/add-ons/webextensions/api/i18n/detectlanguage/index.md b/files/ja/mozilla/add-ons/webextensions/api/i18n/detectlanguage/index.md index 6d7228a92449c1..adc86566135528 100644 --- a/files/ja/mozilla/add-ons/webextensions/api/i18n/detectlanguage/index.md +++ b/files/ja/mozilla/add-ons/webextensions/api/i18n/detectlanguage/index.md @@ -13,8 +13,8 @@ slug: Mozilla/Add-ons/WebExtensions/API/i18n/detectLanguage ```js var detectingLanguages = browser.i18n.detectLanguage( - text // string -) + text, // string +); ``` ### 引数 @@ -45,13 +45,13 @@ var detectingLanguages = browser.i18n.detectLanguage( ```js function onLanguageDetected(langInfo) { - for (lang of langInfo.languages) { + for (lang of langInfo.languages) { console.log("Language is: " + lang.language); console.log("Percentage is: " + lang.percentage); } } -var text = "L'homme est né libre, et partout il est dans les fers." +var text = "L'homme est né libre, et partout il est dans les fers."; var detecting = browser.i18n.detectLanguage(text); detecting.then(onLanguageDetected); diff --git a/files/ja/mozilla/add-ons/webextensions/api/i18n/getacceptlanguages/index.md b/files/ja/mozilla/add-ons/webextensions/api/i18n/getacceptlanguages/index.md index 5b9b6cd5ee6022..b19c446454c403 100644 --- a/files/ja/mozilla/add-ons/webextensions/api/i18n/getacceptlanguages/index.md +++ b/files/ja/mozilla/add-ons/webextensions/api/i18n/getacceptlanguages/index.md @@ -12,7 +12,7 @@ slug: Mozilla/Add-ons/WebExtensions/API/i18n/getAcceptLanguages ## 構文 ```js -var gettingAcceptLanguages = browser.i18n.getAcceptLanguages() +var gettingAcceptLanguages = browser.i18n.getAcceptLanguages(); ``` ### 引数 diff --git a/files/ja/mozilla/add-ons/webextensions/api/i18n/getmessage/index.md b/files/ja/mozilla/add-ons/webextensions/api/i18n/getmessage/index.md index 8508b6f4dc6366..e7c76c898b2961 100644 --- a/files/ja/mozilla/add-ons/webextensions/api/i18n/getmessage/index.md +++ b/files/ja/mozilla/add-ons/webextensions/api/i18n/getmessage/index.md @@ -11,9 +11,9 @@ slug: Mozilla/Add-ons/WebExtensions/API/i18n/getMessage ```js browser.i18n.getMessage( - messageName, // 文字列 - substitutions // 任意 -) + messageName, // 文字列 + substitutions, // 任意 +); ``` ### 引数 @@ -54,9 +54,9 @@ console.log(message); "message": "You clicked $URL$.", "description": "Tells the user which link they clicked.", "placeholders": { - "url" : { - "content" : "$1", - "example" : "https://developer.mozilla.org" + "url": { + "content": "$1", + "example": "https://developer.mozilla.org" } } } diff --git a/files/ja/mozilla/add-ons/webextensions/api/i18n/getuilanguage/index.md b/files/ja/mozilla/add-ons/webextensions/api/i18n/getuilanguage/index.md index 11453a8af320b5..86fd0a5bb8ce9b 100644 --- a/files/ja/mozilla/add-ons/webextensions/api/i18n/getuilanguage/index.md +++ b/files/ja/mozilla/add-ons/webextensions/api/i18n/getuilanguage/index.md @@ -10,7 +10,7 @@ slug: Mozilla/Add-ons/WebExtensions/API/i18n/getUILanguage ## 構文 ```js -browser.i18n.getUILanguage() +browser.i18n.getUILanguage(); ``` ### 引数 diff --git a/files/ja/mozilla/add-ons/webextensions/api/i18n/locale-specific_message_reference/index.md b/files/ja/mozilla/add-ons/webextensions/api/i18n/locale-specific_message_reference/index.md index 5a44d8e9bde553..d473ff21e0e644 100644 --- a/files/ja/mozilla/add-ons/webextensions/api/i18n/locale-specific_message_reference/index.md +++ b/files/ja/mozilla/add-ons/webextensions/api/i18n/locale-specific_message_reference/index.md @@ -32,9 +32,9 @@ slug: Mozilla/Add-ons/WebExtensions/API/i18n/Locale-Specific_Message_reference "message": "$URL$ をクリックしました。", "description": "Tells the user which link they clicked.", "placeholders": { - "url" : { - "content" : "$1", - "example" : "https://developer.mozilla.org" + "url": { + "content": "$1", + "example": "https://developer.mozilla.org" } } } diff --git a/files/ja/mozilla/add-ons/webextensions/api/identity/getredirecturl/index.md b/files/ja/mozilla/add-ons/webextensions/api/identity/getredirecturl/index.md index 15b21a497502f8..dc7726ac1ec6fb 100644 --- a/files/ja/mozilla/add-ons/webextensions/api/identity/getredirecturl/index.md +++ b/files/ja/mozilla/add-ons/webextensions/api/identity/getredirecturl/index.md @@ -14,7 +14,7 @@ slug: Mozilla/Add-ons/WebExtensions/API/identity/getRedirectURL ## 構文 ```js -var redirectURL = browser.identity.getRedirectURL() +var redirectURL = browser.identity.getRedirectURL(); ``` ### 引数 diff --git a/files/ja/mozilla/add-ons/webextensions/api/index.md b/files/ja/mozilla/add-ons/webextensions/api/index.md index 6ffbdd93f65170..38075a8812ea73 100644 --- a/files/ja/mozilla/add-ons/webextensions/api/index.md +++ b/files/ja/mozilla/add-ons/webextensions/api/index.md @@ -16,7 +16,7 @@ function logTabs(tabs) { console.log(tabs); } -browser.tabs.query({currentWindow: true}, logTabs); +browser.tabs.query({ currentWindow: true }, logTabs); ``` API の多くは非同期で、 {{JSxRef("Promise")}} を返します: @@ -30,9 +30,7 @@ function logError(e) { console.error(e); } -let setCookie = browser.cookies.set( - {url: "/"} -); +let setCookie = browser.cookies.set({ url: "/" }); setCookie.then(logCookie, logError); ``` diff --git a/files/ja/mozilla/add-ons/webextensions/api/menus/index.md b/files/ja/mozilla/add-ons/webextensions/api/menus/index.md index 3414c8df5652fa..dbc9739d752fa4 100644 --- a/files/ja/mozilla/add-ons/webextensions/api/menus/index.md +++ b/files/ja/mozilla/add-ons/webextensions/api/menus/index.md @@ -49,57 +49,75 @@ Here's a context menu containing 4 items: a normal item, two radio items with se ![](menus-4.png)You could create a submenu like this using code like: ```js -browser.menus.create({ - id: "remove-me", - title: browser.i18n.getMessage("menuItemRemoveMe"), - contexts: ["all"] -}, onCreated); - -browser.menus.create({ - id: "separator-1", - type: "separator", - contexts: ["all"] -}, onCreated); - -browser.menus.create({ - id: "greenify", - type: "radio", - title: browser.i18n.getMessage("menuItemGreenify"), - contexts: ["all"], - checked: true, - icons: { - "16": "icons/paint-green-16.png", - "32": "icons/paint-green-32.png" - } -}, onCreated); - -browser.menus.create({ - id: "bluify", - type: "radio", - title: browser.i18n.getMessage("menuItemBluify"), - contexts: ["all"], - checked: false, - icons: { - "16": "icons/paint-blue-16.png", - "32": "icons/paint-blue-32.png" - } -}, onCreated); - -browser.menus.create({ - id: "separator-2", - type: "separator", - contexts: ["all"] -}, onCreated); +browser.menus.create( + { + id: "remove-me", + title: browser.i18n.getMessage("menuItemRemoveMe"), + contexts: ["all"], + }, + onCreated, +); + +browser.menus.create( + { + id: "separator-1", + type: "separator", + contexts: ["all"], + }, + onCreated, +); + +browser.menus.create( + { + id: "greenify", + type: "radio", + title: browser.i18n.getMessage("menuItemGreenify"), + contexts: ["all"], + checked: true, + icons: { + 16: "icons/paint-green-16.png", + 32: "icons/paint-green-32.png", + }, + }, + onCreated, +); + +browser.menus.create( + { + id: "bluify", + type: "radio", + title: browser.i18n.getMessage("menuItemBluify"), + contexts: ["all"], + checked: false, + icons: { + 16: "icons/paint-blue-16.png", + 32: "icons/paint-blue-32.png", + }, + }, + onCreated, +); + +browser.menus.create( + { + id: "separator-2", + type: "separator", + contexts: ["all"], + }, + onCreated, +); var checkedState = true; -browser.menus.create({ - id: "check-uncheck", - type: "checkbox", - title: browser.i18n.getMessage("menuItemUncheckMe"), - contexts: ["all"], - checked: checkedState -}, onCreated); +browser.menus.create( + { + id: "check-uncheck", + type: "checkbox", + title: browser.i18n.getMessage("menuItemUncheckMe"), + contexts: ["all"], + checked: checkedState, + }, + onCreated, +); ``` ## 型 diff --git a/files/ja/mozilla/add-ons/webextensions/api/menus/onclicked/index.md b/files/ja/mozilla/add-ons/webextensions/api/menus/onclicked/index.md index 44b70769c34e4a..01208240a810b4 100644 --- a/files/ja/mozilla/add-ons/webextensions/api/menus/onclicked/index.md +++ b/files/ja/mozilla/add-ons/webextensions/api/menus/onclicked/index.md @@ -12,9 +12,9 @@ slug: Mozilla/Add-ons/WebExtensions/API/menus/onClicked ## 書式 ```js -browser.menus.onClicked.addListener(listener) -browser.menus.onClicked.removeListener(listener) -browser.menus.onClicked.hasListener(listener) +browser.menus.onClicked.addListener(listener); +browser.menus.onClicked.removeListener(listener); +browser.menus.onClicked.hasListener(listener); ``` イベントは 3 つの関数を持ちます: @@ -54,12 +54,11 @@ browser.menus.onClicked.hasListener(listener) browser.menus.create({ id: "click-me", title: "Click me!", - contexts: ["all"] + contexts: ["all"], }); browser.menus.onClicked.addListener((info, tab) => { - console.log("Item " + info.menuItemId + " clicked " + - "in tab " + tab.id); + console.log("Item " + info.menuItemId + " clicked " + "in tab " + tab.id); }); ``` diff --git a/files/ja/mozilla/add-ons/webextensions/api/notifications/create/index.md b/files/ja/mozilla/add-ons/webextensions/api/notifications/create/index.md index 5239580591b1bb..875eacb05c2298 100644 --- a/files/ja/mozilla/add-ons/webextensions/api/notifications/create/index.md +++ b/files/ja/mozilla/add-ons/webextensions/api/notifications/create/index.md @@ -19,9 +19,9 @@ This is an asynchronous function that returns a [`Promise`](/ja/docs/Web/JavaScr ```js var creating = browser.notifications.create( - id, // optional string - options // NotificationOptions -) + id, // optional string + options, // NotificationOptions +); ``` ### パラメータ @@ -46,7 +46,7 @@ Create and display a basic notification periodically, using an {{WebExtAPIRef("a Note that you'll need the "alarms" [permission](/ja/docs/Mozilla/Add-ons/WebExtensions/manifest.json/permissions) to create alarms (as well as the "notifications" permission to create notifications). ```js -var cakeNotification = "cake-notification" +var cakeNotification = "cake-notification"; /* @@ -59,18 +59,18 @@ than a minute. */ var CAKE_INTERVAL = 0.1; -browser.alarms.create("", {periodInMinutes: CAKE_INTERVAL}); +browser.alarms.create("", { periodInMinutes: CAKE_INTERVAL }); -browser.alarms.onAlarm.addListener(function(alarm) { +browser.alarms.onAlarm.addListener(function (alarm) { browser.notifications.create(cakeNotification, { - "type": "basic", - "iconUrl": browser.extension.getURL("icons/cake-96.png"), - "title": "Time for cake!", - "message": "Something something cake" + type: "basic", + iconUrl: browser.extension.getURL("icons/cake-96.png"), + title: "Time for cake!", + message: "Something something cake", }); }); -browser.browserAction.onClicked.addListener(()=> { +browser.browserAction.onClicked.addListener(() => { var clearing = browser.notifications.clear(cakeNotification); clearing.then(() => { console.log("cleared"); @@ -81,7 +81,7 @@ browser.browserAction.onClicked.addListener(()=> { Display a similar notification, but add buttons naming cakes, and log the selected cake when a button is clicked: ```js -var cakeNotification = "cake-notification" +var cakeNotification = "cake-notification"; /* @@ -96,25 +96,26 @@ var CAKE_INTERVAL = 0.1; var buttons = [ { - "title": "Chocolate" - }, { - "title": "Battenberg" - } + title: "Chocolate", + }, + { + title: "Battenberg", + }, ]; -browser.alarms.create("", {periodInMinutes: CAKE_INTERVAL}); +browser.alarms.create("", { periodInMinutes: CAKE_INTERVAL }); -browser.alarms.onAlarm.addListener(function(alarm) { +browser.alarms.onAlarm.addListener(function (alarm) { browser.notifications.create(cakeNotification, { - "type": "basic", - "iconUrl": browser.extension.getURL("icons/cake-96.png"), - "title": "Time for cake!", - "message": "Something something cake", - "buttons": buttons + type: "basic", + iconUrl: browser.extension.getURL("icons/cake-96.png"), + title: "Time for cake!", + message: "Something something cake", + buttons: buttons, }); }); -browser.browserAction.onClicked.addListener(()=> { +browser.browserAction.onClicked.addListener(() => { var clearing = browser.notifications.clear(cakeNotification); clearing.then(() => { console.log("cleared"); diff --git a/files/ja/mozilla/add-ons/webextensions/api/pageaction/onclicked/index.md b/files/ja/mozilla/add-ons/webextensions/api/pageaction/onclicked/index.md index affac916731c02..24a6073bfda0b5 100644 --- a/files/ja/mozilla/add-ons/webextensions/api/pageaction/onclicked/index.md +++ b/files/ja/mozilla/add-ons/webextensions/api/pageaction/onclicked/index.md @@ -12,9 +12,9 @@ slug: Mozilla/Add-ons/WebExtensions/API/pageAction/onClicked ## 書式 ```js -browser.pageAction.onClicked.addListener(listener) -browser.pageAction.onClicked.removeListener(listener) -browser.pageAction.onClicked.hasListener(listener) +browser.pageAction.onClicked.addListener(listener); +browser.pageAction.onClicked.removeListener(listener); +browser.pageAction.onClicked.hasListener(listener); ``` イベントは 3 つの関数を持ちます: @@ -50,11 +50,10 @@ var CATGIFS = "http://chilloutandwatchsomecatgifs.com/"; browser.pageAction.onClicked.addListener((tab) => { browser.pageAction.hide(tab.id); - browser.tabs.update({url: CATGIFS}); + browser.tabs.update({ url: CATGIFS }); }); -browser.pageAction.onClicked.addListener(function () { -}); +browser.pageAction.onClicked.addListener(function () {}); ``` {{WebExtExamples}} diff --git a/files/ja/mozilla/add-ons/webextensions/api/proxy/index.md b/files/ja/mozilla/add-ons/webextensions/api/proxy/index.md index b647c5fc17dc17..5b57ff906fc67e 100644 --- a/files/ja/mozilla/add-ons/webextensions/api/proxy/index.md +++ b/files/ja/mozilla/add-ons/webextensions/api/proxy/index.md @@ -30,10 +30,10 @@ browser.runtime.onMessage.addListener((message, sender) => { let messageToProxy = { enabled: true, foo: "A string", - bar: 1234 + bar: 1234, }; -browser.runtime.sendMessage(messageToProxy, {toProxyScript: true}); +browser.runtime.sendMessage(messageToProxy, { toProxyScript: true }); ``` ```js @@ -80,13 +80,13 @@ const proxySpecification = [ host: "foo.com", port: 1080, proxyDNS: true, - failoverTimeout: 5 + failoverTimeout: 5, }, { type: "socks", host: "bar.com", port: 1060, - } + }, ]; ``` diff --git a/files/ja/mozilla/add-ons/webextensions/api/runtime/lasterror/index.md b/files/ja/mozilla/add-ons/webextensions/api/runtime/lasterror/index.md index dba0fc50345eba..3ea5c8d9dd9e5d 100644 --- a/files/ja/mozilla/add-ons/webextensions/api/runtime/lasterror/index.md +++ b/files/ja/mozilla/add-ons/webextensions/api/runtime/lasterror/index.md @@ -41,10 +41,7 @@ function logCookie(c) { } } -browser.cookies.set( - {url: "https://developer.mozilla.org/"}, - logCookie -); +browser.cookies.set({ url: "https://developer.mozilla.org/" }, logCookie); ``` 同じ処理内容ですが、 `setCookie()` の結果を扱うプロミスを使う例です。 @@ -58,9 +55,9 @@ function logError(e) { console.error(e); } -const setCookie = browser.cookies.set( - {url: "https://developer.mozilla.org/"} -); +const setCookie = browser.cookies.set({ + url: "https://developer.mozilla.org/", +}); setCookie.then(logCookie, logError); ``` diff --git a/files/ja/mozilla/add-ons/webextensions/api/runtime/oninstalled/index.md b/files/ja/mozilla/add-ons/webextensions/api/runtime/oninstalled/index.md index b483a3db9ff6a4..d0ba3354b54fe5 100644 --- a/files/ja/mozilla/add-ons/webextensions/api/runtime/oninstalled/index.md +++ b/files/ja/mozilla/add-ons/webextensions/api/runtime/oninstalled/index.md @@ -59,7 +59,7 @@ browser.runtime.onInstalled.hasListener(listener) function handleInstalled(details) { console.log(details.reason); browser.tabs.create({ - url: "https://example.com" + url: "https://example.com", }); } diff --git a/files/ja/mozilla/add-ons/webextensions/api/runtime/onmessage/index.md b/files/ja/mozilla/add-ons/webextensions/api/runtime/onmessage/index.md index f436a0c8cca680..1c74cf0c1d4aba 100644 --- a/files/ja/mozilla/add-ons/webextensions/api/runtime/onmessage/index.md +++ b/files/ja/mozilla/add-ons/webextensions/api/runtime/onmessage/index.md @@ -62,6 +62,7 @@ browser.runtime.onMessage.hasListener(listener) - : このイベントが発生したときに実行されるリスナー関数。関数には次の引数が渡される。 - `message` + - : `object` 型。メッセージ本体。これは JSON 化できるオブジェクトです([データクローンアルゴリズム](/ja/docs/Mozilla/Add-ons/WebExtensions/Chrome_incompatibilities#データクローンアルゴリズム)を参照)。 - `sender` @@ -85,24 +86,22 @@ browser.runtime.onMessage.hasListener(listener) > > ```js example-bad > // このようにしないでください - > browser.runtime.onMessage.addListener( - > async (data, sender) => { - > if (data.type === 'handle_me') { return 'done'; } + > browser.runtime.onMessage.addListener(async (data, sender) => { + > if (data.type === "handle_me") { + > return "done"; > } - > ); + > }); > ``` > > もし、リスナーが特定の種類のメッセージにのみ応答したい場合は、リスナーを非同期関数として定義し、リスナーが応答する予定のメッセージに対してのみプロミスを返す必要があります - そうでなければ、false または undefined を返してください。 > > ```js example-good - > browser.runtime.onMessage.addListener( - > (data, sender) => { - > if (data.type === 'handle_me') { - > return Promise.resolve('done'); - > } - > return false; + > browser.runtime.onMessage.addListener((data, sender) => { + > if (data.type === "handle_me") { + > return Promise.resolve("done"); > } - > ); + > return false; + > }); > ``` ## ブラウザーの互換性 @@ -124,7 +123,7 @@ function notifyExtension(e) { if (e.target.tagName !== "A") { return; } - browser.runtime.sendMessage({"url": e.target.href}); + browser.runtime.sendMessage({ url: e.target.href }); } ``` @@ -137,10 +136,10 @@ browser.runtime.onMessage.addListener(notify); function notify(message) { browser.notifications.create({ - "type": "basic", - "iconUrl": browser.extension.getURL("link.png"), - "title": "リンクをクリックしました!", - "message": message.url + type: "basic", + iconUrl: browser.extension.getURL("link.png"), + title: "リンクをクリックしました!", + message: message.url, }); } ``` @@ -161,7 +160,9 @@ function handleError(error) { } function sendMessage(e) { - const sending = browser.runtime.sendMessage({content: "コンテンツスクリプトからのメッセージです"}); + const sending = browser.runtime.sendMessage({ + content: "コンテンツスクリプトからのメッセージです", + }); sending.then(handleResponse, handleError); } @@ -174,8 +175,10 @@ window.addEventListener("click", sendMessage); // background-script.js function handleMessage(request, sender, sendResponse) { - console.log(`コンテンツスクリプトがメッセージを送信しました: ${request.content}`); - sendResponse({response: "バックグラウンドスクリプトからの応答です"}); + console.log( + `コンテンツスクリプトがメッセージを送信しました: ${request.content}`, + ); + sendResponse({ response: "バックグラウンドスクリプトからの応答です" }); } browser.runtime.onMessage.addListener(handleMessage); @@ -187,8 +190,12 @@ browser.runtime.onMessage.addListener(handleMessage); // background-script.js function handleMessage(request, sender, sendResponse) { - console.log(`コンテンツスクリプトがメッセージを送信しました: ${request.content}`); - return Promise.resolve({response: "バックグラウンドスクリプトからの応答です"}); + console.log( + `コンテンツスクリプトがメッセージを送信しました: ${request.content}`, + ); + return Promise.resolve({ + response: "バックグラウンドスクリプトからの応答です", + }); } browser.runtime.onMessage.addListener(handleMessage); @@ -202,9 +209,13 @@ browser.runtime.onMessage.addListener(handleMessage); // background-script.js function handleMessage(request, sender, sendResponse) { - console.log(`コンテンツスクリプトがメッセージを送信しました: ${request.content}`); + console.log( + `コンテンツスクリプトがメッセージを送信しました: ${request.content}`, + ); setTimeout(() => { - sendResponse({response: "非同期的なバックグラウンドスクリプトからの応答です"}); + sendResponse({ + response: "非同期的なバックグラウンドスクリプトからの応答です", + }); }, 1000); return true; } @@ -227,9 +238,11 @@ function handleResponse(isBookmarked) { } } -browser.runtime.sendMessage({ - url: firstLink.href -}).then(handleResponse); +browser.runtime + .sendMessage({ + url: firstLink.href, + }) + .then(handleResponse); ``` これが対応するバックグラウンドスクリプトです。`{{WebExtAPIRef("bookmarks.search()")}}` を使うことで、リンクがブックマークされているかを確認する {{jsxref("Promise")}} を返します。 @@ -238,9 +251,11 @@ browser.runtime.sendMessage({ // background-script.js function isBookmarked(message, sender, response) { - return browser.bookmarks.search({ - url: message.url - }).then((results) => results.length > 0); + return browser.bookmarks + .search({ + url: message.url, + }) + .then((results) => results.length > 0); } browser.runtime.onMessage.addListener(isBookmarked); @@ -254,7 +269,9 @@ browser.runtime.onMessage.addListener(isBookmarked); function handleMessage(request, sender, sendResponse) { return new Promise((resolve) => { setTimeout(() => { - resolve({response: "非同期的なバックグラウンドスクリプトからの応答です"}); + resolve({ + response: "非同期的なバックグラウンドスクリプトからの応答です", + }); }, 1000); }); } diff --git a/files/ja/mozilla/add-ons/webextensions/api/runtime/openoptionspage/index.md b/files/ja/mozilla/add-ons/webextensions/api/runtime/openoptionspage/index.md index fca73b671fd585..057a864b385569 100644 --- a/files/ja/mozilla/add-ons/webextensions/api/runtime/openoptionspage/index.md +++ b/files/ja/mozilla/add-ons/webextensions/api/runtime/openoptionspage/index.md @@ -10,7 +10,7 @@ slug: Mozilla/Add-ons/WebExtensions/API/runtime/openOptionsPage ## 構文 ```js -var openingPage = browser.runtime.openOptionsPage() +var openingPage = browser.runtime.openOptionsPage(); ``` ### パラメータ diff --git a/files/ja/mozilla/add-ons/webextensions/api/runtime/sendmessage/index.md b/files/ja/mozilla/add-ons/webextensions/api/runtime/sendmessage/index.md index eb8bf72c4b7990..85842362a4faf8 100644 --- a/files/ja/mozilla/add-ons/webextensions/api/runtime/sendmessage/index.md +++ b/files/ja/mozilla/add-ons/webextensions/api/runtime/sendmessage/index.md @@ -21,10 +21,10 @@ slug: Mozilla/Add-ons/WebExtensions/API/runtime/sendMessage ```js var sending = browser.runtime.sendMessage( - extensionId, // optional string - message, // any - options // optional object -) + extensionId, // optional string + message, // any + options, // optional object +); ``` ### 引数 @@ -85,7 +85,7 @@ function handleError(error) { function notifyBackgroundPage(e) { var sending = browser.runtime.sendMessage({ - greeting: "Greeting from the content script" + greeting: "Greeting from the content script", }); sending.then(handleResponse, handleError); } @@ -99,9 +99,8 @@ window.addEventListener("click", notifyBackgroundPage); // background-script.js function handleMessage(request, sender, sendResponse) { - console.log("Message from the content script: " + - request.greeting); - sendResponse({response: "Response from background script"}); + console.log("Message from the content script: " + request.greeting); + sendResponse({ response: "Response from background script" }); } browser.runtime.onMessage.addListener(handleMessage); diff --git a/files/ja/mozilla/add-ons/webextensions/api/storage/storagearea/get/index.md b/files/ja/mozilla/add-ons/webextensions/api/storage/storagearea/get/index.md index 4b1effef60f11d..8db10a35d55c11 100644 --- a/files/ja/mozilla/add-ons/webextensions/api/storage/storagearea/get/index.md +++ b/files/ja/mozilla/add-ons/webextensions/api/storage/storagearea/get/index.md @@ -41,8 +41,8 @@ let gettingItem = browser.storage..get( ```js // "kitten" と "monster" を格納 browser.storage.local.set({ - kitten: {name:"Mog", eats:"mice"}, - monster: {name:"Kraken", eats:"people"} + kitten: { name: "Mog", eats: "mice" }, + monster: { name: "Kraken", eats: "people" }, }); ``` @@ -89,7 +89,11 @@ gettingItem.then(onGot, onError); オブジェクト名の配列を指定すると合致するものを全て返します。 ```js -let gettingItem = browser.storage.local.get(["kitten", "monster", "grapefruit"]); +let gettingItem = browser.storage.local.get([ + "kitten", + "monster", + "grapefruit", +]); gettingItem.then(onGot, onError); // -> Object { kitten: Object, monster: Object } @@ -103,8 +107,8 @@ let gettingItem = browser.storage.local.get({ monster: "no monster", grapefruit: { name: "Grape Fruit", - eats: "Water" - } + eats: "Water", + }, }); // -> Object { kitten: Object, monster: Object, grapefruit: Object } @@ -115,15 +119,15 @@ let gettingItem = browser.storage.local.get({ ### Chrome での例 ```js -chrome.storage.local.get("kitten", function(items){ - console.log(items.kitten); // -> {name:"Mog", eats:"mice"} +chrome.storage.local.get("kitten", function (items) { + console.log(items.kitten); // -> {name:"Mog", eats:"mice"} }); ``` Or with an arrow function ```js -chrome.storage.local.get("kitten", items=>{ +chrome.storage.local.get("kitten", (items) => { console.log(items.kitten); // -> {name:"Mog", eats:"mice"} }); ``` diff --git a/files/ja/mozilla/add-ons/webextensions/api/storage/storagearea/set/index.md b/files/ja/mozilla/add-ons/webextensions/api/storage/storagearea/set/index.md index 13d0e9a32fb728..32a228ed0d01d2 100644 --- a/files/ja/mozilla/add-ons/webextensions/api/storage/storagearea/set/index.md +++ b/files/ja/mozilla/add-ons/webextensions/api/storage/storagearea/set/index.md @@ -55,30 +55,27 @@ function gotMonster(item) { } function onError(error) { - console.log(error) + console.log(error); } // オブジェクトを2つ定義 var monster = { name: "Kraken", tentacles: true, - eyeCount: 10 -} + eyeCount: 10, +}; var kitten = { name: "Moggy", tentacles: false, - eyeCount: 2 -} + eyeCount: 2, +}; // オブジェクト2つを格納 -browser.storage.local.set({kitten, monster}) - .then(setItem, onError); +browser.storage.local.set({ kitten, monster }).then(setItem, onError); -browser.storage.local.get("kitten") - .then(gotKitten, onError); -browser.storage.local.get("monster") - .then(gotMonster, onError); +browser.storage.local.get("kitten").then(gotKitten, onError); +browser.storage.local.get("monster").then(gotMonster, onError); ``` {{WebExtExamples}} diff --git a/files/ja/mozilla/add-ons/webextensions/api/tabs/capturevisibletab/index.md b/files/ja/mozilla/add-ons/webextensions/api/tabs/capturevisibletab/index.md index 1b4129861282fe..f0d7e995e01cec 100644 --- a/files/ja/mozilla/add-ons/webextensions/api/tabs/capturevisibletab/index.md +++ b/files/ja/mozilla/add-ons/webextensions/api/tabs/capturevisibletab/index.md @@ -13,9 +13,9 @@ slug: Mozilla/Add-ons/WebExtensions/API/tabs/captureVisibleTab ```js var capturing = browser.tabs.captureVisibleTab( - windowId, // optional integer - options // optional extensionTypes.ImageDetails -) + windowId, // optional integer + options, // optional extensionTypes.ImageDetails +); ``` ### 引数 @@ -42,7 +42,7 @@ function onError(error) { console.log(`Error: ${error}`); } -browser.browserAction.onClicked.addListener(function() { +browser.browserAction.onClicked.addListener(function () { var capturing = browser.tabs.captureVisibleTab(); capturing.then(onCaptured, onError); }); diff --git a/files/ja/mozilla/add-ons/webextensions/api/tabs/create/index.md b/files/ja/mozilla/add-ons/webextensions/api/tabs/create/index.md index ff038cf1ff80d1..40c8fc5a5b9016 100644 --- a/files/ja/mozilla/add-ons/webextensions/api/tabs/create/index.md +++ b/files/ja/mozilla/add-ons/webextensions/api/tabs/create/index.md @@ -13,8 +13,8 @@ slug: Mozilla/Add-ons/WebExtensions/API/tabs/create ```js var creating = browser.tabs.create( - createProperties // object -) + createProperties, // object +); ``` ### パラメータ @@ -73,16 +73,16 @@ var creating = browser.tabs.create( ```js function onCreated(tab) { - console.log(`Created new tab: ${tab.id}`) + console.log(`Created new tab: ${tab.id}`); } function onError(error) { console.log(`Error: ${error}`); } -browser.browserAction.onClicked.addListener(function() { +browser.browserAction.onClicked.addListener(function () { var creating = browser.tabs.create({ - url:"https://example.org" + url: "https://example.org", }); creating.then(onCreated, onError); }); diff --git a/files/ja/mozilla/add-ons/webextensions/api/tabs/duplicate/index.md b/files/ja/mozilla/add-ons/webextensions/api/tabs/duplicate/index.md index 24bf4242ca3166..ee867f23af9b6b 100644 --- a/files/ja/mozilla/add-ons/webextensions/api/tabs/duplicate/index.md +++ b/files/ja/mozilla/add-ons/webextensions/api/tabs/duplicate/index.md @@ -13,8 +13,8 @@ ID で指定されたタブを複製します。 ```js var duplicating = browser.tabs.duplicate( - tabId // integer -) + tabId, // integer +); ``` ### パラメータ @@ -44,7 +44,8 @@ function onError(error) { } // Duplicate the first tab in the array -function duplicateFirstTab(tabs) {console.log(tabs); +function duplicateFirstTab(tabs) { + console.log(tabs); if (tabs.length > 0) { var duplicating = browser.tabs.duplicate(tabs[0].id); duplicating.then(onDuplicated, onError); diff --git a/files/ja/mozilla/add-ons/webextensions/api/tabs/executescript/index.md b/files/ja/mozilla/add-ons/webextensions/api/tabs/executescript/index.md index 14418a27fa8f61..29ec9fce82e11e 100644 --- a/files/ja/mozilla/add-ons/webextensions/api/tabs/executescript/index.md +++ b/files/ja/mozilla/add-ons/webextensions/api/tabs/executescript/index.md @@ -12,9 +12,9 @@ JavaScript のコードをページに挿入します。 また、自らの拡張機能パッケージに含まれるページに対してであれば、次の方法でコードを挿入することも可能です。 ```js -browser.tabs.create({url: "/my-page.html"}).then(() => { +browser.tabs.create({ url: "/my-page.html" }).then(() => { browser.tabs.executeScript({ - code: `console.log('location:', window.location.href);` + code: `console.log('location:', window.location.href);`, }); }); ``` @@ -31,9 +31,9 @@ browser.tabs.create({url: "/my-page.html"}).then(() => { ```js var executing = browser.tabs.executeScript( - tabId, // optional integer - details // object -) + tabId, // optional integer + details, // object +); ``` ### 引数 @@ -64,7 +64,8 @@ var executing = browser.tabs.executeScript( スクリプトの結果とは最後に評価された文のことです。これは、[Web コンソール](/ja/docs/Tools/Web_Console)で実行されたスクリプトの出力 (結果であって、`console.log()` の出力のことではありません) に似ています。例えば、次のようなスクリプトを挿入したとします。 ```js -var foo='my result';foo; +var foo = "my result"; +foo; ``` この場合、結果配列には、文字列 "`my result`" が含まれます。結果は、[構造化複製](/ja/docs/Web/API/Web_Workers_API/Structured_clone_algorithm)が可能でなければなりません。最後の文を [`Promise`](/ja/docs/Web/JavaScript/Reference/Global_Objects/Promise) にすることもできますが、[webextension-polyfill](https://github.com/mozilla/webextension-polyfill#tabsexecutescript) ライブラリではサポートされていません。 @@ -87,7 +88,7 @@ function onError(error) { var makeItGreen = 'document.body.style.border = "5px solid green"'; var executing = browser.tabs.executeScript({ - code: makeItGreen + code: makeItGreen, }); executing.then(onExecuted, onError); ``` @@ -105,7 +106,7 @@ function onError(error) { var executing = browser.tabs.executeScript({ file: "/content-script.js", - allFrames: true + allFrames: true, }); executing.then(onExecuted, onError); ``` @@ -121,9 +122,8 @@ function onError(error) { console.log(`Error: ${error}`); } -var executing = browser.tabs.executeScript( - 2, { - file: "/content-script.js" +var executing = browser.tabs.executeScript(2, { + file: "/content-script.js", }); executing.then(onExecuted, onError); ``` diff --git a/files/ja/mozilla/add-ons/webextensions/api/tabs/get/index.md b/files/ja/mozilla/add-ons/webextensions/api/tabs/get/index.md index b9c93911aee670..1fcd6e64b2fdef 100644 --- a/files/ja/mozilla/add-ons/webextensions/api/tabs/get/index.md +++ b/files/ja/mozilla/add-ons/webextensions/api/tabs/get/index.md @@ -13,8 +13,8 @@ slug: Mozilla/Add-ons/WebExtensions/API/tabs/get ```js var getting = browser.tabs.get( - tabId // integer -) + tabId, // integer +); ``` ### Parameters diff --git a/files/ja/mozilla/add-ons/webextensions/api/tabs/oncreated/index.md b/files/ja/mozilla/add-ons/webextensions/api/tabs/oncreated/index.md index d1148e1663b3fb..01fbdaf9c7d6a8 100644 --- a/files/ja/mozilla/add-ons/webextensions/api/tabs/oncreated/index.md +++ b/files/ja/mozilla/add-ons/webextensions/api/tabs/oncreated/index.md @@ -12,9 +12,9 @@ slug: Mozilla/Add-ons/WebExtensions/API/tabs/onCreated ## 書式 ```js -browser.tabs.onCreated.addListener(callback) -browser.tabs.onCreated.removeListener(listener) -browser.tabs.onCreated.hasListener(listener) +browser.tabs.onCreated.addListener(callback); +browser.tabs.onCreated.removeListener(listener); +browser.tabs.onCreated.hasListener(listener); ``` イベントは3つの関数を持ちます: diff --git a/files/ja/mozilla/add-ons/webextensions/api/tabs/query/index.md b/files/ja/mozilla/add-ons/webextensions/api/tabs/query/index.md index 3e562f81e51d00..6fd047f8e3c665 100644 --- a/files/ja/mozilla/add-ons/webextensions/api/tabs/query/index.md +++ b/files/ja/mozilla/add-ons/webextensions/api/tabs/query/index.md @@ -13,8 +13,8 @@ slug: Mozilla/Add-ons/WebExtensions/API/tabs/query ```js var querying = browser.tabs.query( - queryInfo // object -) + queryInfo, // object +); ``` ### パラメータ @@ -102,7 +102,7 @@ function onError(error) { console.log(`Error: ${error}`); } -var querying = browser.tabs.query({currentWindow: true}); +var querying = browser.tabs.query({ currentWindow: true }); querying.then(logTabs, onError); ``` @@ -120,7 +120,7 @@ function onError(error) { console.log(`Error: ${error}`); } -var querying = browser.tabs.query({currentWindow: true, active: true}); +var querying = browser.tabs.query({ currentWindow: true, active: true }); querying.then(logTabs, onError); ``` @@ -138,7 +138,7 @@ function onError(error) { console.log(`Error: ${error}`); } -var querying = browser.tabs.query({url: "*://*.mozilla.org/*"}); +var querying = browser.tabs.query({ url: "*://*.mozilla.org/*" }); querying.then(logTabs, onError); ``` @@ -157,7 +157,7 @@ function onError(error) { console.log(`Error: ${error}`); } -var querying = browser.tabs.query({url: "moz-extension://*/*"}); +var querying = browser.tabs.query({ url: "moz-extension://*/*" }); querying.then(logTabs, onError); ``` @@ -176,7 +176,7 @@ function onError(error) { console.log(`Error: ${error}`); } -var querying = browser.tabs.query({url: browser.extension.getURL("*")}); +var querying = browser.tabs.query({ url: browser.extension.getURL("*") }); querying.then(logTabs, onError); ``` diff --git a/files/ja/mozilla/add-ons/webextensions/api/tabs/remove/index.md b/files/ja/mozilla/add-ons/webextensions/api/tabs/remove/index.md index 2de497cb3530a8..a65e05ee67d7da 100644 --- a/files/ja/mozilla/add-ons/webextensions/api/tabs/remove/index.md +++ b/files/ja/mozilla/add-ons/webextensions/api/tabs/remove/index.md @@ -13,8 +13,8 @@ slug: Mozilla/Add-ons/WebExtensions/API/tabs/remove ```js var removing = browser.tabs.remove( - tabIds // integer or integer array -) + tabIds, // integer or integer array +); ``` ### パラメータ diff --git a/files/ja/mozilla/add-ons/webextensions/chrome_incompatibilities/index.md b/files/ja/mozilla/add-ons/webextensions/chrome_incompatibilities/index.md index c4f070ffa1b912..ba8ee24378120c 100644 --- a/files/ja/mozilla/add-ons/webextensions/chrome_incompatibilities/index.md +++ b/files/ja/mozilla/add-ons/webextensions/chrome_incompatibilities/index.md @@ -16,13 +16,13 @@ Webextension を用いた拡張機能は Chrome や Opera の拡張機能と互 Chrome では、拡張機能は `chrome` ネームスペースを使って特権 JavaScript API にアクセスします: ```js -chrome.browserAction.setIcon({path: "path/to/icon.png"}); +chrome.browserAction.setIcon({ path: "path/to/icon.png" }); ``` WebExtensions は同等の API に `browser` ネームスペースを使ってアクセスします: ```js -browser.browserAction.setIcon({path: "path/to/icon.png"}); +browser.browserAction.setIcon({ path: "path/to/icon.png" }); ``` 多くの API は非同期です。 Chrome では、非同期 API はコールバックを使用して値を返し、{{WebExtAPIRef("runtime.lastError")}}がエラーを通知します: @@ -36,10 +36,7 @@ function logCookie(c) { } } -chrome.cookies.set( - {url: "https://developer.mozilla.org/"}, - logCookie -); +chrome.cookies.set({ url: "https://developer.mozilla.org/" }, logCookie); ``` 同様の WebExtensions API では [promises](/ja/docs/Web/JavaScript/Reference/Global_Objects/Promise) を利用します: @@ -53,9 +50,7 @@ function logError(e) { console.error(e); } -var setCookie = browser.cookies.set( - {url: "https://developer.mozilla.org/"} -); +var setCookie = browser.cookies.set({ url: "https://developer.mozilla.org/" }); setCookie.then(logCookie, logError); ``` diff --git a/files/ja/mozilla/add-ons/webextensions/content_scripts/index.md b/files/ja/mozilla/add-ons/webextensions/content_scripts/index.md index d4c38045ff3057..4e8df67d884d22 100644 --- a/files/ja/mozilla/add-ons/webextensions/content_scripts/index.md +++ b/files/ja/mozilla/add-ons/webextensions/content_scripts/index.md @@ -40,12 +40,12 @@ l10n: 次の 3 つの方法のいずれかを使用して、ウェブページにコンテンツスクリプトを読み込むことができます。 -1. - インストール時に、URL パターンに一致するページ内へ。 - - : `manifest.json` の [`content_scripts`](/ja/docs/Mozilla/Add-ons/WebExtensions/manifest.json/content_scripts) キーを使用して、URL が[指定されたパターンに一致する](/ja/docs/Mozilla/Add-ons/WebExtensions/Match_patterns)ページをロードするたびにコンテンツスクリプトを読み込むようブラウザーに依頼できます。 -2. - 実行時に、URL パターンに一致するページ内へ。 - - : {{WebExtAPIRef("contentScripts")}} API を使って、URL が[指定されたパターンに一致する](/ja/docs/Mozilla/Add-ons/WebExtensions/Match_patterns)ページを読み込むたびにコンテンツスクリプトを読み込むようブラウザーに依頼できます。これは方法 1 と似ていますが、実行時にコンテンツスクリプトを追加/削除できる点が異なります。) -3. - 実行時に、特定のタブへ。 - - : Manifest V2 において、[`tabs.executeScript()`](/ja/docs/Mozilla/Add-ons/WebExtensions/API/tabs/executeScript) API を使用するか、Manifest V3 において、{{WebExtAPIRef("scripting.executeScript()")}} を使用すると、必要なときにコンテンツスクリプトを特定のタブに読み込むことができます。(ユーザーが[ブラウザーアクション](/ja/docs/Mozilla/Add-ons/WebExtensions/user_interface/Browser_action)をクリックした場合など。) +1. インストール時に、URL パターンに一致するページ内へ。 + - : `manifest.json` の [`content_scripts`](/ja/docs/Mozilla/Add-ons/WebExtensions/manifest.json/content_scripts) キーを使用して、URL が[指定されたパターンに一致する](/ja/docs/Mozilla/Add-ons/WebExtensions/Match_patterns)ページをロードするたびにコンテンツスクリプトを読み込むようブラウザーに依頼できます。 +2. 実行時に、URL パターンに一致するページ内へ。 + - : {{WebExtAPIRef("contentScripts")}} API を使って、URL が[指定されたパターンに一致する](/ja/docs/Mozilla/Add-ons/WebExtensions/Match_patterns)ページを読み込むたびにコンテンツスクリプトを読み込むようブラウザーに依頼できます。これは方法 1 と似ていますが、実行時にコンテンツスクリプトを追加/削除できる点が異なります。) +3. 実行時に、特定のタブへ。 + - : Manifest V2 において、[`tabs.executeScript()`](/ja/docs/Mozilla/Add-ons/WebExtensions/API/tabs/executeScript) API を使用するか、Manifest V3 において、{{WebExtAPIRef("scripting.executeScript()")}} を使用すると、必要なときにコンテンツスクリプトを特定のタブに読み込むことができます。(ユーザーが[ブラウザーアクション](/ja/docs/Mozilla/Add-ons/WebExtensions/user_interface/Browser_action)をクリックした場合など。) *フレームごと、拡張機能ごとの*グローバルスコープしかありません。これは 1 つのコンテンツスクリプトの変数は、読み込み方にかかわらず、他のコンテンツスクリプトからアクセスできることになります。 @@ -72,7 +72,7 @@ Firefox では、この挙動は [Xray vision](/ja/docs/Mozilla/Add-ons/WebExten 次のようなウェブページを考えてみてください。 ```html - + @@ -101,7 +101,7 @@ window.foo = "This global variable was added by a page script"; // redefine the built-in window.confirm() function window.confirm = () => { alert("The page script has also redefined 'confirm'"); -} +}; ``` 今度は拡張機能がページにコンテンツスクリプトを挿入します。 @@ -114,7 +114,7 @@ let pageScriptPara = document.getElementById("page-script-para"); pageScriptPara.style.backgroundColor = "blue"; // can't see properties added by page-script.js -console.log(window.foo); // undefined +console.log(window.foo); // undefined // sees the original form of redefined properties window.confirm("Are you sure?"); // calls the original window.confirm() @@ -272,7 +272,7 @@ function notifyExtension(e) { if (e.target.tagName !== "A") { return; } - browser.runtime.sendMessage({"url": e.target.href}); + browser.runtime.sendMessage({ url: e.target.href }); } ``` @@ -285,10 +285,10 @@ browser.runtime.onMessage.addListener(notify); function notify(message) { browser.notifications.create({ - "type": "basic", - "iconUrl": browser.extension.getURL("link.png"), - "title": "You clicked a link!", - "message": message.url + type: "basic", + iconUrl: browser.extension.getURL("link.png"), + title: "You clicked a link!", + message: message.url, }); } ``` @@ -328,8 +328,8 @@ function notify(message) { ```js // content-script.js -let myPort = browser.runtime.connect({name:"port-from-cs"}); -myPort.postMessage({greeting: "hello from content script"}); +let myPort = browser.runtime.connect({ name: "port-from-cs" }); +myPort.postMessage({ greeting: "hello from content script" }); myPort.onMessage.addListener((m) => { console.log("In content script, received message from background script: "); @@ -337,7 +337,7 @@ myPort.onMessage.addListener((m) => { }); document.body.addEventListener("click", () => { - myPort.postMessage({greeting: "they clicked the page!"}); + myPort.postMessage({ greeting: "they clicked the page!" }); }); ``` @@ -359,16 +359,18 @@ let portFromCS; function connected(p) { portFromCS = p; - portFromCS.postMessage({greeting: "hi there content script!"}); + portFromCS.postMessage({ greeting: "hi there content script!" }); portFromCS.onMessage.addListener((m) => { - portFromCS.postMessage({greeting: `In background script, received message from content script: ${m.greeting}`}); + portFromCS.postMessage({ + greeting: `In background script, received message from content script: ${m.greeting}`, + }); }); } browser.runtime.onConnect.addListener(connected); browser.browserAction.onClicked.addListener(() => { - portFromCS.postMessage({greeting: "they clicked the button!"}); + portFromCS.postMessage({ greeting: "they clicked the button!" }); }); ``` @@ -379,19 +381,19 @@ browser.browserAction.onClicked.addListener(() => { ```js // background-script.js -let ports = [] +let ports = []; function connected(p) { - ports[p.sender.tab.id] = p + ports[p.sender.tab.id] = p; // … } -browser.runtime.onConnect.addListener(connected) +browser.runtime.onConnect.addListener(connected); browser.browserAction.onClicked.addListener(() => { ports.forEach((p) => { - p.postMessage({greeting: "they clicked the button!"}) - }) + p.postMessage({ greeting: "they clicked the button!" }); + }); }); ``` @@ -422,10 +424,13 @@ let messenger = document.getElementById("from-page-script"); messenger.addEventListener("click", messageContentScript); function messageContentScript() { - window.postMessage({ - direction: "from-page-script", - message: "Message from the page" - }, "*"); + window.postMessage( + { + direction: "from-page-script", + message: "Message from the page", + }, + "*", + ); } ``` @@ -481,15 +486,18 @@ window.addEventListener("message", (event) => { ```js // content-script.js -window.eval('window.x = 1;'); -eval('window.y = 2'); +window.eval("window.x = 1;"); +eval("window.y = 2"); console.log(`In content script, window.x: ${window.x}`); console.log(`In content script, window.y: ${window.y}`); -window.postMessage({ - message: "check" -}, "*"); +window.postMessage( + { + message: "check", + }, + "*", +); ``` このコードは単に変数 x と y を、`window.eval()` と `eval()` を用いて作成し、値をログに出し、ページにメッセージします。 @@ -536,11 +544,11 @@ In page script, window.y: undefined > > console.log = () => { > original(true); -> } +> }; > ``` > > ```js example-bad > // content-script.js calls the redefined version > -> window.eval('console.log(false)'); +> window.eval("console.log(false)"); > ``` diff --git a/files/ja/mozilla/add-ons/webextensions/content_security_policy/index.md b/files/ja/mozilla/add-ons/webextensions/content_security_policy/index.md index d7b75710a9a035..a9aeec12ccf83a 100644 --- a/files/ja/mozilla/add-ons/webextensions/content_security_policy/index.md +++ b/files/ja/mozilla/add-ons/webextensions/content_security_policy/index.md @@ -14,15 +14,14 @@ WebExtension APIs で開発される拡張機能には、既定で適用され ウェブサイトと同様に、拡張機能はさまざまなソースからコンテンツを読み込めます。例えば、ブラウザーアクションのポップアップは HTML 文書として指定できて、通常のウェブページのようにさまざまなソースからの JavaScript と CSS を入れることができます: ```html - + - + - - ``` @@ -66,7 +63,7 @@ WebExtension APIs で開発される拡張機能には、既定で適用され 既定の CSP の下では、拡張機能のローカルにある [\ + ``` これは要求したリソースを読み込みません: 静かに失敗し、このリソースから取ってきたはずのいかなるオブジェクトも見つかりません。この解決方法が 2 つあります: @@ -95,7 +92,9 @@ var f = new Function("console.log('foo');"); 既定の CSP ではインライン JavaScript は実行されません。これは ` + ``` ```html diff --git a/files/ja/mozilla/add-ons/webextensions/extending_the_developer_tools/index.md b/files/ja/mozilla/add-ons/webextensions/extending_the_developer_tools/index.md index 7fd2138837089e..a8425bf070135a 100644 --- a/files/ja/mozilla/add-ons/webextensions/extending_the_developer_tools/index.md +++ b/files/ja/mozilla/add-ons/webextensions/extending_the_developer_tools/index.md @@ -34,10 +34,10 @@ devtools ページには目に見える DOM はありませんが、[` @@ -54,14 +54,16 @@ devtools ウィンドウは、JavaScript デバッガ、ネットワークモニ `devtools.panels.create()` API を使用して、devtools ウィンドウに独自のパネルを作成できます: ```js -browser.devtools.panels.create( - "My Panel", // title - "icons/star.png", // icon - "devtools/panel/panel.html" // content -).then((newPanel) => { - newPanel.onShown.addListener(initialisePanel); - newPanel.onHidden.addListener(unInitialisePanel); -}); +browser.devtools.panels + .create( + "My Panel", // title + "icons/star.png", // icon + "devtools/panel/panel.html", // content + ) + .then((newPanel) => { + newPanel.onShown.addListener(initialisePanel); + newPanel.onHidden.addListener(unInitialisePanel); + }); ``` これにはパネルのタイトル、アイコン、コンテンツの 3 つの引数が必要です。新しいパネルを表す `devtools.panels.ExtensionPanel` オブジェクトに解決される [`Promise`](/ja/docs/Web/JavaScript/Reference/Global_Objects/Promise) を返します。 @@ -94,7 +96,7 @@ const scriptToAttach = "document.body.innerHTML = 'Hi from the devtools';"; window.addEventListener("click", () => { browser.runtime.sendMessage({ tabId: browser.devtools.inspectedWindow.tabId, - script: scriptToAttach + script: scriptToAttach, }); }); ``` @@ -104,7 +106,7 @@ window.addEventListener("click", () => { function handleMessage(request, sender, sendResponse) { browser.tabs.executeScript(request.tabId, { - code: request.script + code: request.script, }); } diff --git a/files/ja/mozilla/add-ons/webextensions/implement_a_settings_page/index.md b/files/ja/mozilla/add-ons/webextensions/implement_a_settings_page/index.md index 374458b9c8cb6a..4a10f3d11051c2 100644 --- a/files/ja/mozilla/add-ons/webextensions/implement_a_settings_page/index.md +++ b/files/ja/mozilla/add-ons/webextensions/implement_a_settings_page/index.md @@ -23,7 +23,6 @@ WebExtension API では一般に、設定は [`storage`](/ja/docs/Mozilla/Add-on ```json { - "manifest_version": 2, "name": "Settings example", "version": "1.0", @@ -34,7 +33,6 @@ WebExtension API では一般に、設定は [`storage`](/ja/docs/Mozilla/Add-on "js": ["borderify.js"] } ] - } ``` @@ -60,7 +58,6 @@ document.body.style.border = "10px solid blue"; ```json { - "manifest_version": 2, "name": "Settings example", "version": "1.0", @@ -83,7 +80,6 @@ document.body.style.border = "10px solid blue"; "id": "addon@example.com" } } - } ``` @@ -96,24 +92,21 @@ document.body.style.border = "10px solid blue"; 次に "options.html" を提供する約束をしたので、作成します。"settings" ディレクトリー内にその名前でファイルを作成して、次の中身を与えます: ```html - + - + -
- - + +
- - ``` @@ -125,12 +118,11 @@ document.body.style.border = "10px solid blue"; function saveOptions(e) { e.preventDefault(); browser.storage.sync.set({ - color: document.querySelector("#color").value + color: document.querySelector("#color").value, }); } function restoreOptions() { - function setCurrentChoice(result) { document.querySelector("#color").value = result.color || "blue"; } @@ -163,7 +155,7 @@ document.querySelector("form").addEventListener("submit", saveOptions); > **警告:** バージョン 52 より前の Firefox の [browser.storage.local.get()](/ja/docs/Mozilla/Add-ons/WebExtensions/API/storage/StorageArea/get) のバグにより、下記のコードは機能しません。バージョン 52 より前の Firefox で動作させるには、`onGot()` の中で 2 回出てくる `item.color` を `item[0].color` に変えないといけません。 ```js - function onError(error) { +function onError(error) { console.log(`Error: ${error}`); } diff --git a/files/ja/mozilla/add-ons/webextensions/interact_with_the_clipboard/index.md b/files/ja/mozilla/add-ons/webextensions/interact_with_the_clipboard/index.md index 8346c9191194d8..b5b701817550ac 100644 --- a/files/ja/mozilla/add-ons/webextensions/interact_with_the_clipboard/index.md +++ b/files/ja/mozilla/add-ons/webextensions/interact_with_the_clipboard/index.md @@ -34,7 +34,7 @@ Clipboard API は、拡張機能から任意のデータをクリップボード ページスクリプトの場合、Web API の {{domxref("Permissions", "navigator.permissions")}} を使用して `"clipboard-write"` パーミッションを要求する必要があります。そのパーミッションは、{{domxref("Permissions.query", "navigator.permissions.query()")}} を使って確認することができます。 ```js -navigator.permissions.query({name: "clipboard-write"}).then((result) => { +navigator.permissions.query({ name: "clipboard-write" }).then((result) => { if (result.state === "granted" || result.state === "prompt") { /* write to the clipboard now */ } @@ -47,11 +47,14 @@ navigator.permissions.query({name: "clipboard-write"}).then((result) => { ```js function updateClipboard(newClip) { - navigator.clipboard.writeText(newClip).then(() => { - /* clipboard successfully set */ - }, () => { - /* clipboard write failed */ - }); + navigator.clipboard.writeText(newClip).then( + () => { + /* clipboard successfully set */ + }, + () => { + /* clipboard write failed */ + }, + ); } ``` @@ -62,8 +65,7 @@ function updateClipboard(newClip) { 例えば、以下のような HTML を含むポップアップがあったとします。 ```html - - + ``` `"copy"` ボタンで {{HTMLElement("input")}} 要素の内容をコピーさせるには、次のようなコードを使用します。 @@ -90,7 +92,7 @@ function copy() { } browser.alarms.create({ - delayInMinutes: 0.1 + delayInMinutes: 0.1, }); browser.alarms.onAlarm.addListener(copy); @@ -129,8 +131,9 @@ Clipboard API の {{domxref("Clipboard.readText", "navigator.clipboard.readText( 一度 [Permissions API](/ja/docs/Web/API/Permissions_API) から `"clipboard-read"` パーミッションを取得すると、クリップボードから簡単に読み取ることができるようになります。例えば、このコードのスニペットはクリップボードからテキストを取得し、ID が `"outbox"` の要素の内容をそのテキストで置き換えます。 ```js -navigator.clipboard.readText().then((clipText) => - document.getElementById("outbox").innerText = clipText); +navigator.clipboard + .readText() + .then((clipText) => (document.getElementById("outbox").innerText = clipText)); ``` ### execCommand() を使用する @@ -140,8 +143,7 @@ navigator.clipboard.readText().then((clipText) => このような内容を含む HTML を考えてみましょう。 ```html - - + ``` ユーザーが `"paste"` の {{HTMLElement("button")}} をクリックしたときに、クリップボードから ID が `"output"` の {{HTMLElement("textarea")}} 要素の内容を設定するには、次のようなコードを使用します。 diff --git a/files/ja/mozilla/add-ons/webextensions/intercept_http_requests/index.md b/files/ja/mozilla/add-ons/webextensions/intercept_http_requests/index.md index df2080b1826ce2..8bcb051ab33dce 100644 --- a/files/ja/mozilla/add-ons/webextensions/intercept_http_requests/index.md +++ b/files/ja/mozilla/add-ons/webextensions/intercept_http_requests/index.md @@ -33,10 +33,7 @@ HTTP リクエストへ介入するには {{WebExtAPIRef("webRequest")}} API を "name": "webRequest-demo", "version": "1.0", - "permissions": [ - "webRequest", - "" - ], + "permissions": ["webRequest", ""], "background": { "scripts": ["background.js"] @@ -51,10 +48,9 @@ function logURL(requestDetails) { console.log(`Loading: ${requestDetails.url}`); } -browser.webRequest.onBeforeRequest.addListener( - logURL, - {urls: [""]} -); +browser.webRequest.onBeforeRequest.addListener(logURL, { + urls: [""], +}); ``` ここでは、リクエストを作成する直前に{{WebExtAPIRef("webRequest.onBeforeRequest", "onBeforeRequest")}} を利用して、 `logURL()` 関数を呼んでいます。 `logURL()` 関数では、イベントオブジェクトからリクエスト URL を取得し、ブラウザーのコンソールに出力しています。 `{urls: [""]}` [パターン](/ja/docs/Mozilla/Add-ons/WebExtensions/Match_patterns) は、すべての URL に対する HTTP リクエストに介入することを表しています。 @@ -82,7 +78,6 @@ browser.webRequest.onBeforeRequest.addListener( ```json { - "description": "Demonstrating webRequests", "manifest_version": 2, "name": "webRequest-demo", @@ -97,7 +92,6 @@ browser.webRequest.onBeforeRequest.addListener( "background": { "scripts": ["background.js"] } - } ``` @@ -105,13 +99,14 @@ browser.webRequest.onBeforeRequest.addListener( - `webRequestBlocking` を [`permission`](/ja/docs/Mozilla/Add-ons/WebExtensions/manifest.json/permissions) に追加しました。 この特別な権限は、拡張機能がリクエストを変更したいときにリクエストされます。 -- ` 権限を個々の[ホスト権限](/ja/docs/Mozilla/Add-ons/WebExtensions/manifest.json/permissions#host_権限)に置き換えてください。これはリクエストされた権限数を最小限にするための良い習慣です。 +- ` 権限を個々の[ホスト権限](/ja/docs/Mozilla/Add-ons/WebExtensions/manifest.json/permissions#host*権限)に置き換えてください。これはリクエストされた権限数を最小限にするための良い習慣です。 続いて "background.js" を以下のように書き換えます。 ```js let pattern = "https://developer.mozilla.org/*"; -const targetUrl = "https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/Your_second_WebExtension/frog.jpg"; +const targetUrl = + "https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/Your_second_WebExtension/frog.jpg"; function redirect(requestDetails) { console.log(`Redirecting: ${requestDetails.url}`); @@ -119,14 +114,14 @@ function redirect(requestDetails) { return; } return { - redirectUrl: targetUrl + redirectUrl: targetUrl, }; } browser.webRequest.onBeforeRequest.addListener( redirect, - {urls:[pattern], types:["image"]}, - ["blocking"] + { urls: [pattern], types: ["image"] }, + ["blocking"], ); ``` @@ -174,7 +169,8 @@ browser.webRequest.onBeforeRequest.addListener( ```js let targetPage = "http://useragentstring.com/*"; -let ua = "Opera/9.80 (X11; Linux i686; Ubuntu/14.10) Presto/2.12.388 Version/12.16"; +let ua = + "Opera/9.80 (X11; Linux i686; Ubuntu/14.10) Presto/2.12.388 Version/12.16"; function rewriteUserAgentHeader(e) { e.requestHeaders.forEach((header) => { @@ -182,13 +178,13 @@ function rewriteUserAgentHeader(e) { header.value = ua; } }); - return {requestHeaders: e.requestHeaders}; + return { requestHeaders: e.requestHeaders }; } browser.webRequest.onBeforeSendHeaders.addListener( rewriteUserAgentHeader, - {urls: [targetPage]}, - ["blocking", "requestHeaders"] + { urls: [targetPage] }, + ["blocking", "requestHeaders"], ); ``` diff --git a/files/ja/mozilla/add-ons/webextensions/internationalization/index.md b/files/ja/mozilla/add-ons/webextensions/internationalization/index.md index fa08daa1f7c12f..da75ae7a973971 100644 --- a/files/ja/mozilla/add-ons/webextensions/internationalization/index.md +++ b/files/ja/mozilla/add-ons/webextensions/internationalization/index.md @@ -80,9 +80,9 @@ l10n: "message": "You clicked $URL$.", "description": "Tells the user which link they clicked.", "placeholders": { - "url" : { - "content" : "$1", - "example" : "https://developer.mozilla.org" + "url": { + "content": "$1", + "example": "https://developer.mozilla.org" } } } diff --git a/files/ja/mozilla/add-ons/webextensions/manifest.json/commands/index.md b/files/ja/mozilla/add-ons/webextensions/manifest.json/commands/index.md index a08b7b712bfecd..8b7411c2f06882 100644 --- a/files/ja/mozilla/add-ons/webextensions/manifest.json/commands/index.md +++ b/files/ja/mozilla/add-ons/webextensions/manifest.json/commands/index.md @@ -117,7 +117,7 @@ slug: Mozilla/Add-ons/WebExtensions/manifest.json/commands 次に、これらのコマンドの最初を下記のようにリッスンできます: ```js -browser.commands.onCommand.addListener(function(command) { +browser.commands.onCommand.addListener(function (command) { if (command == "toggle-feature") { console.log("toggling the feature!"); } diff --git a/files/ja/mozilla/add-ons/webextensions/manifest.json/icons/index.md b/files/ja/mozilla/add-ons/webextensions/manifest.json/icons/index.md index d2f82c715b15fb..5fa2d43731d2bc 100644 --- a/files/ja/mozilla/add-ons/webextensions/manifest.json/icons/index.md +++ b/files/ja/mozilla/add-ons/webextensions/manifest.json/icons/index.md @@ -56,18 +56,18 @@ You can use SVG and the browser will scale your icon appropriately. There are cu 1. You need to specify a viewBox in the image. E.g.: - ```html - **メモ:** If you are using a program like Inkscape for creating SVG, you might want to save it as a "plain SVG". Firefox might be confused by various special namespaces and not display your icon. diff --git a/files/ja/mozilla/add-ons/webextensions/manifest.json/options_ui/index.md b/files/ja/mozilla/add-ons/webextensions/manifest.json/options_ui/index.md index 87c01ce45daa2c..fc41aac70a764d 100644 --- a/files/ja/mozilla/add-ons/webextensions/manifest.json/options_ui/index.md +++ b/files/ja/mozilla/add-ons/webextensions/manifest.json/options_ui/index.md @@ -49,8 +49,8 @@ l10n: `options_ui` キーは次のコンテンツを持つオブジェクトです。 -| `open_in_tab` | `Boolean` | 省略可能。既定値は `false`。`true` の場合、オプションページはブラウザーのアドオンマネージャーに統合されたものではなく、通常のブラウザータブで開かれる。 | -| `page` | `String` | 必須。オプションページの仕様を含む HTML ファイルへのパス。パスは manifest.json 自体への相対パス。 | +| `open_in_tab` | `Boolean` | 省略可能。既定値は `false`。`true` の場合、オプションページはブラウザーのアドオンマネージャーに統合されたものではなく、通常のブラウザータブで開かれる。 | +| `page` | `String` | 必須。オプションページの仕様を含む HTML ファイルへのパス。パスは manifest.json 自体への相対パス。 | diff --git a/files/ja/mozilla/add-ons/webextensions/manifest.json/page_action/index.md b/files/ja/mozilla/add-ons/webextensions/manifest.json/page_action/index.md index 2c1da6c485f0be..4f06b340acc2b8 100644 --- a/files/ja/mozilla/add-ons/webextensions/manifest.json/page_action/index.md +++ b/files/ja/mozilla/add-ons/webextensions/manifest.json/page_action/index.md @@ -262,7 +262,7 @@ The `page_action` key is an object that may have any of three properties, all op A page action with just an icon, specified in 2 different sizes. The extension's background scripts can receive click events when the user clicks the icon using code like this: ```js - browser.pageAction.onClicked.addListener(handleClick); +browser.pageAction.onClicked.addListener(handleClick); ``` ```json diff --git a/files/ja/mozilla/add-ons/webextensions/manifest.json/theme/index.md b/files/ja/mozilla/add-ons/webextensions/manifest.json/theme/index.md index cd9e0573fa3c6d..a4068742197d9f 100644 --- a/files/ja/mozilla/add-ons/webextensions/manifest.json/theme/index.md +++ b/files/ja/mozilla/add-ons/webextensions/manifest.json/theme/index.md @@ -146,11 +146,11 @@ All URLs are relative to the manifest.json file and cannot reference an external Images should be 200 pixels high to ensure they always fill the header space vertically. -| 名前 | 型 | 説明 | -| ------------------------ | ------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `headerURL` | `String` | Fully optional from Firefox 60 onwards. One of theme_frame or headerURL had to be specified before Firefox 60. Note also that in Firefox 60 onwards, any {{cssxref("text-shadow")}} applied to the header text is removed if no `headerURL` is specified (see [Firefox バグ 1404688](https://bugzil.la/1404688)).The URL of a foreground image to be added to the header area and anchored to the upper right corner of the header area. | -| `theme_frame` | `String` | Fully optional from Firefox 60 onwards. One of theme_frame or headerURL had to be specified before Firefox 60.Alias for `headerURL`, provided for Chrome compatibility. | -| `additional_backgrounds` | `Array` of `String` | オプション An array of URLs for additional background images to be added to the header area and displayed behind the `"headerURL":` image. These images layer the first image in the array on top, the last image in the array at the bottom.既定では all images are anchored to the upper right corner of the header area, but their alignment and repeat behavior can be controlled by properties of `"properties":`. | +| 名前 | 型 | 説明 | +| ------------------------ | ------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `headerURL` | `String` | Fully optional from Firefox 60 onwards. One of theme_frame or headerURL had to be specified before Firefox 60. Note also that in Firefox 60 onwards, any {{cssxref("text-shadow")}} applied to the header text is removed if no `headerURL` is specified (see [Firefox バグ 1404688](https://bugzil.la/1404688)).The URL of a foreground image to be added to the header area and anchored to the upper right corner of the header area. | +| `theme_frame` | `String` | Fully optional from Firefox 60 onwards. One of theme_frame or headerURL had to be specified before Firefox 60.Alias for `headerURL`, provided for Chrome compatibility. | +| `additional_backgrounds` | `Array` of `String` | オプション An array of URLs for additional background images to be added to the header area and displayed behind the `"headerURL":` image. These images layer the first image in the array on top, the last image in the array at the bottom.既定では all images are anchored to the upper right corner of the header area, but their alignment and repeat behavior can be controlled by properties of `"properties":`. | ### colors diff --git a/files/ja/mozilla/add-ons/webextensions/manifest.json/web_accessible_resources/index.md b/files/ja/mozilla/add-ons/webextensions/manifest.json/web_accessible_resources/index.md index c58d6cf70b7350..f865ab93c6b662 100644 --- a/files/ja/mozilla/add-ons/webextensions/manifest.json/web_accessible_resources/index.md +++ b/files/ja/mozilla/add-ons/webextensions/manifest.json/web_accessible_resources/index.md @@ -44,7 +44,7 @@ slug: Mozilla/Add-ons/WebExtensions/manifest.json/web_accessible_resources 例えば、拡張機能に images/my-image.png にある画像ファイルを入れたい場合、このようにします: -```html +```plain my-extension-files/ manifest.json my-background-script.js @@ -60,8 +60,8 @@ my-extension-files/ このファイルは次の URL で利用できます: -```html -moz-extension:///images/my-image.png" +```url +moz-extension:///images/my-image.png ``` `` は拡張機能の ID **ではありません。**これは各ブラウザーインスタンス用にランダムに生成されます。これはウェブサイトがインストールしている拡張機能を調べることで指紋を取ることを防止します。 diff --git a/files/ja/mozilla/add-ons/webextensions/match_patterns/index.md b/files/ja/mozilla/add-ons/webextensions/match_patterns/index.md index 73d79a9e7ef73a..184671c76232ed 100644 --- a/files/ja/mozilla/add-ons/webextensions/match_patterns/index.md +++ b/files/ja/mozilla/add-ons/webextensions/match_patterns/index.md @@ -63,19 +63,19 @@ _path_ の値は、URL パスに [URL クエリーストリング](https://en.wi ## 例 -| パターン | マッチする例 | マッチしない例 | | -| ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --- | +| パターン | マッチする例 | マッチしない例 | | +| ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --- | | ``すべての URL にマッチ | `http://example.org/` `https://a.org/some/path/` `ws://sockets.somewhere.org/` `wss://ws.example.com/stuff/` `ftp://files.somewhere.org/` `ftps://files.somewhere.org/` | `resource://a/b/c/` (サポートされていないスキーム) | | -| `*://*/*`すべての HTTP, HTTPS, WebSocket URL にマッチ | `http://example.org/` `https://a.org/some/path/` `ws://sockets.somewhere.org/` `wss://ws.example.com/stuff/` | `ftp://ftp.example.org/` (マッチしないスキーム)`ftps://ftp.example.org/` (マッチしないスキーム)`file:///a/` (マッチしないスキーム) | | -| `*://*.mozilla.org/*`"mozilla.org" かそのサブドメインでホストされている HTTP, HTTPS, WebSocket の URL にマッチ | `http://mozilla.org/` `https://mozilla.org/` `http://a.mozilla.org/` `http://a.b.mozilla.org/` `https://b.mozilla.org/path/` `ws://ws.mozilla.org/` `wss://secure.mozilla.org/something` | `ftp://mozilla.org/` (マッチしないスキーム)`http://mozilla.com/` (マッチしないホスト)`http://firefox.org/` (マッチしないホスト) | | -| `*://mozilla.org/`HTTP や HTTPS や WebSocket の"mozilla.org/"のホストのみマッチ | `http://mozilla.org/` `https://mozilla.org/` `ws://mozilla.org/` `wss://mozilla.org/` | `ftp://mozilla.org/` (マッチしないスキーム)`http://a.mozilla.org/` (マッチしないホスト)`http://mozilla.org/a` (マッチしないパス) | | -| `ftp://mozilla.org/`"ftp\://mozilla.org/"のみマッチ | `ftp://mozilla.org` | `http://mozilla.org/` (マッチしないスキーム)`ftp://sub.mozilla.org/` (マッチしないホスト)`ftp://mozilla.org/path` (マッチしないパス) | | -| `https://*/path`HTTPS URL で path が "path"のホストのみマッチ | `https://mozilla.org/path` `https://a.mozilla.org/path` `https://something.com/path` | `http://mozilla.org/path` (マッチしないスキーム)`https://mozilla.org/path/` (マッチしないパス)`https://mozilla.org/a` (マッチしないパス)`https://mozilla.org/` (マッチしないパス)`https://mozilla.org/path?foo=1` (URL クエリーストリングによりマッチしないパス) | | -| `https://*/path/`あらゆるホスト上の HTTPS URL で、パスが "path/" で URL にクエリーストリングのないものにマッチ | `https://mozilla.org/path/` `https://a.mozilla.org/path/` `https://something.com/path`/ | `http://mozilla.org/path/` (マッチしないスキーム)`https://mozilla.org/path` (マッチしないパス)`https://mozilla.org/a` (マッチしないパス)`https://mozilla.org/` (マッチしないパス)`https://mozilla.org/path?foo=1` (URL クエリーストリングによりマッチしないパス) | | -| `https://mozilla.org/*`HTTPS URL のみにマッチで、"mozilla.org"だけ、パスやクエリーストリングは問わない | `https://mozilla.org/` `https://mozilla.org/path` `https://mozilla.org/another` `https://mozilla.org/path/to/doc` `https://mozilla.org/path/to/doc?foo=1` | `http://mozilla.org/path` (マッチしないスキーム)`https://mozilla.com/path` (マッチしないホスト) | | -| `https://mozilla.org/a/b/c/`この URL 、あるいはフラグメント付きのこの URL にのみマッチ | `https://mozilla.org/a/b/c/` `https://mozilla.org/a/b/c/#section1` | これ以外のすべて | | +| `*://*/*`すべての HTTP, HTTPS, WebSocket URL にマッチ | `http://example.org/` `https://a.org/some/path/` `ws://sockets.somewhere.org/` `wss://ws.example.com/stuff/` | `ftp://ftp.example.org/` (マッチしないスキーム)`ftps://ftp.example.org/` (マッチしないスキーム)`file:///a/` (マッチしないスキーム) | | +| `*://*.mozilla.org/*`"mozilla.org" かそのサブドメインでホストされている HTTP, HTTPS, WebSocket の URL にマッチ | `http://mozilla.org/` `https://mozilla.org/` `http://a.mozilla.org/` `http://a.b.mozilla.org/` `https://b.mozilla.org/path/` `ws://ws.mozilla.org/` `wss://secure.mozilla.org/something` | `ftp://mozilla.org/` (マッチしないスキーム)`http://mozilla.com/` (マッチしないホスト)`http://firefox.org/` (マッチしないホスト) | | +| `*://mozilla.org/`HTTP や HTTPS や WebSocket の"mozilla.org/"のホストのみマッチ | `http://mozilla.org/` `https://mozilla.org/` `ws://mozilla.org/` `wss://mozilla.org/` | `ftp://mozilla.org/` (マッチしないスキーム)`http://a.mozilla.org/` (マッチしないホスト)`http://mozilla.org/a` (マッチしないパス) | | +| `ftp://mozilla.org/`"ftp\://mozilla.org/"のみマッチ | `ftp://mozilla.org` | `http://mozilla.org/` (マッチしないスキーム)`ftp://sub.mozilla.org/` (マッチしないホスト)`ftp://mozilla.org/path` (マッチしないパス) | | +| `https://*/path`HTTPS URL で path が "path"のホストのみマッチ | `https://mozilla.org/path` `https://a.mozilla.org/path` `https://something.com/path` | `http://mozilla.org/path` (マッチしないスキーム)`https://mozilla.org/path/` (マッチしないパス)`https://mozilla.org/a` (マッチしないパス)`https://mozilla.org/` (マッチしないパス)`https://mozilla.org/path?foo=1` (URL クエリーストリングによりマッチしないパス) | | +| `https://*/path/`あらゆるホスト上の HTTPS URL で、パスが "path/" で URL にクエリーストリングのないものにマッチ | `https://mozilla.org/path/` `https://a.mozilla.org/path/` `https://something.com/path`/ | `http://mozilla.org/path/` (マッチしないスキーム)`https://mozilla.org/path` (マッチしないパス)`https://mozilla.org/a` (マッチしないパス)`https://mozilla.org/` (マッチしないパス)`https://mozilla.org/path?foo=1` (URL クエリーストリングによりマッチしないパス) | | +| `https://mozilla.org/*`HTTPS URL のみにマッチで、"mozilla.org"だけ、パスやクエリーストリングは問わない | `https://mozilla.org/` `https://mozilla.org/path` `https://mozilla.org/another` `https://mozilla.org/path/to/doc` `https://mozilla.org/path/to/doc?foo=1` | `http://mozilla.org/path` (マッチしないスキーム)`https://mozilla.com/path` (マッチしないホスト) | | +| `https://mozilla.org/a/b/c/`この URL 、あるいはフラグメント付きのこの URL にのみマッチ | `https://mozilla.org/a/b/c/` `https://mozilla.org/a/b/c/#section1` | これ以外のすべて | | | `https://mozilla.org/*/b/*/`"mozilla.org"でホストされた HTTPS URL で、パスは中間のどこかに "b" を含むもの。クエリーストリングが / で終了していればそれにもマッチ | `https://mozilla.org/a/b/c/` `https://mozilla.org/d/b/f/` `https://mozilla.org/a/b/c/d/` `https://mozilla.org/a/b/c/d/#section1` `https://mozilla.org/a/b/c/d/?foo=/` `https://mozilla.org/a?foo=21314&bar=/b/&extra=c/` | `https://mozilla.org/b/*/` (マッチしないパス)`https://mozilla.org/a/b/` (マッチしないパス)`https://mozilla.org/a/b/c/d/?foo=bar` (URL クエリーストリングによりマッチしないパス) | | -| `file:///blah/*`FILE URL でパスが "blah" で始まるもの | `file:///blah/` `file://blah/bleh` | `file:///bleh/` (マッチしないパス) | | +| `file:///blah/*`FILE URL でパスが "blah" で始まるもの | `file:///blah/` `file://blah/bleh` | `file:///bleh/` (マッチしないパス) | | ### 無効なマッチパターン diff --git a/files/ja/mozilla/add-ons/webextensions/modify_a_web_page/index.md b/files/ja/mozilla/add-ons/webextensions/modify_a_web_page/index.md index fac7e118d1fc88..d1a2c7ad5031cc 100644 --- a/files/ja/mozilla/add-ons/webextensions/modify_a_web_page/index.md +++ b/files/ja/mozilla/add-ons/webextensions/modify_a_web_page/index.md @@ -26,7 +26,6 @@ WebExtensions API での実現方法は2つあります: ```json { - "manifest_version": 2, "name": "modify-page", "version": "1.0", @@ -37,7 +36,6 @@ WebExtensions API での実現方法は2つあります: "js": ["page-eater.js"] } ] - } ``` @@ -52,7 +50,7 @@ WebExtensions API での実現方法は2つあります: ```js document.body.textContent = ""; -var header = document.createElement('h1'); +var header = document.createElement("h1"); header.textContent = "This page has been eaten"; document.body.appendChild(header); ``` @@ -71,20 +69,15 @@ document.body.appendChild(header); ```json { - "manifest_version": 2, "name": "modify-page", "version": "1.0", - "permissions": [ - "activeTab", - "contextMenus" - ], + "permissions": ["activeTab", "contextMenus"], "background": { "scripts": ["background.js"] } - } ``` @@ -98,13 +91,13 @@ document.body.appendChild(header); ```js browser.contextMenus.create({ id: "eat-page", - title: "Eat this page" + title: "Eat this page", }); -browser.contextMenus.onClicked.addListener(function(info, tab) { +browser.contextMenus.onClicked.addListener(function (info, tab) { if (info.menuItemId == "eat-page") { browser.tabs.executeScript({ - file: "page-eater.js" + file: "page-eater.js", }); } }); @@ -114,7 +107,7 @@ browser.contextMenus.onClicked.addListener(function(info, tab) { この時点で拡張機能は以下のようになっています。 -```html +```plain modify-page/ background.js manifest.json @@ -145,27 +138,27 @@ modify-page/ ```js browser.contextMenus.create({ id: "eat-page", - title: "Eat this page" + title: "Eat this page", }); function messageTab(tabs) { browser.tabs.sendMessage(tabs[0].id, { - replacement: "Message from the extension!" + replacement: "Message from the extension!", }); } function onExecuted(result) { - var querying = browser.tabs.query({ - active: true, - currentWindow: true - }); - querying.then(messageTab); + var querying = browser.tabs.query({ + active: true, + currentWindow: true, + }); + querying.then(messageTab); } -browser.contextMenus.onClicked.addListener(function(info, tab) { +browser.contextMenus.onClicked.addListener(function (info, tab) { if (info.menuItemId == "eat-page") { let executing = browser.tabs.executeScript({ - file: "page-eater.js" + file: "page-eater.js", }); executing.then(onExecuted); } @@ -179,7 +172,7 @@ browser.contextMenus.onClicked.addListener(function(info, tab) { ```js function eatPageReceiver(request, sender, sendResponse) { document.body.textContent = ""; - var header = document.createElement('h1'); + var header = document.createElement("h1"); header.textContent = request.replacement; document.body.appendChild(header); } @@ -198,7 +191,7 @@ browser.runtime.onMessage.addListener(eatPageReceiver); ```js browser.runtime.sendMessage({ - title: "from page-eater.js" + title: "from page-eater.js", }); ``` diff --git a/files/ja/mozilla/add-ons/webextensions/native_manifests/index.md b/files/ja/mozilla/add-ons/webextensions/native_manifests/index.md index ccbf390d235b15..15c20a898d116c 100644 --- a/files/ja/mozilla/add-ons/webextensions/native_manifests/index.md +++ b/files/ja/mozilla/add-ons/webextensions/native_manifests/index.md @@ -11,8 +11,8 @@ slug: Mozilla/Add-ons/WebExtensions/Native_manifests | [Native messaging マニフェスト](#Native_messaging_manifests) | [native messaging](/ja/docs/Mozilla/Add-ons/WebExtensions/Native_messaging) と呼ぶ機能を可能にします、ここでは拡張機能は端末にインストールされたネイティブアプリとやりとりできます。 | | ------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -| [Managed storage マニフェスト](#Managed_storage_manifests) | {{WebExtAPIRef("storage.managed")}} API 使って拡張機能がアクセスする読み込み専用データを定義します。 | -| [PKCS #11 マニフェスト](#PKCS_11_manifests) | 拡張機能が {{WebExtAPIRef("pkcs11")}} API を使って PKCS #11 セキュリティモジュールを列挙して、Firefox にインストールできるようにします。 | +| [Managed storage マニフェスト](#Managed_storage_manifests) | {{WebExtAPIRef("storage.managed")}} API 使って拡張機能がアクセスする読み込み専用データを定義します。 | +| [PKCS #11 マニフェスト](#PKCS_11_manifests) | 拡張機能が {{WebExtAPIRef("pkcs11")}} API を使って PKCS #11 セキュリティモジュールを列挙して、Firefox にインストールできるようにします。 | すべてのネイティブマニフェスト用に、ブラウザーがマニフェストを見つけられるように調整する必要があります。 [マニフェストの場所](#Manifest_location) のセクションでこのルールを述べています。 @@ -20,13 +20,13 @@ slug: Mozilla/Add-ons/WebExtensions/Native_manifests native messaging マニフェストは以下のプロパティを含む単一の JSON オブジェクトです: -| 名前 | 種類 | 説明 | -| -------------------- | --------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| 名前 | 種類 | 説明 | +| -------------------- | --------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `name` | String | ネイティブアプリケーションの名前です。この名前は拡張機能の {{WebExtAPIRef("runtime.connectNative()")}} か {{WebExtAPIRef("runtime.sendNativeMessage()")}} に渡される名前と一致している必要があります。OS X と Linux では、native messaging マニフェストの(.json 拡張子を除いた)ファイル名とも一致していなければなりません。Windows では、native messaging マニフェストの場所を記した作成済みレジストリキーの名前と一致している必要があります。次の正規表現にマッチする必要があります: "^\w+(\\.\w+)\*$" つまり、名前には(大文字か小文字の)英数字とアンダースコア、ドットのみ含めることができます。最初または最後の文字にドットを使用することはできず、ドットを 2 つ以上連続させることもできません。 | -| `description` | String | ネイティブアプリケーションの説明です。 | -| `path` | String | ネイティブアプリケーションのパスです。Windows では、マニフェスト自身からの相対パスを指定することもできます。OS X や Linux では絶対パスでなければなりません。 | -| `type` | String | 拡張機能にアプリケーションが接続するために使用する方法を記述します。現在のところ、"stdio" のみが指定可能です。これはアプリケーションが標準入力 (stdin) を介してメッセージを受信し、標準出力 (stdout) を使用してメッセージを送信することを示します。 | -| `allowed_extensions` | Array of String | [Add-on ID](/ja/docs/Mozilla/Add-ons/WebExtensions/WebExtensions_and_the_Add-on_ID) の配列です。配列中のそれぞれの値はこのネイティブアプリケーションとの通信が許可されている拡張機能を表します。つまり、作成する拡張機能の manifest.json ファイルに [applications](/ja/Add-ons/WebExtensions/manifest.json/applications) キーを含めたくなるものと思われるため、開発中に明示的な ID を設定しておくと良いでしょう。 | +| `description` | String | ネイティブアプリケーションの説明です。 | +| `path` | String | ネイティブアプリケーションのパスです。Windows では、マニフェスト自身からの相対パスを指定することもできます。OS X や Linux では絶対パスでなければなりません。 | +| `type` | String | 拡張機能にアプリケーションが接続するために使用する方法を記述します。現在のところ、"stdio" のみが指定可能です。これはアプリケーションが標準入力 (stdin) を介してメッセージを受信し、標準出力 (stdout) を使用してメッセージを送信することを示します。 | +| `allowed_extensions` | Array of String | [Add-on ID](/ja/docs/Mozilla/Add-ons/WebExtensions/WebExtensions_and_the_Add-on_ID) の配列です。配列中のそれぞれの値はこのネイティブアプリケーションとの通信が許可されている拡張機能を表します。つまり、作成する拡張機能の manifest.json ファイルに [applications](/ja/Add-ons/WebExtensions/manifest.json/applications) キーを含めたくなるものと思われるため、開発中に明示的な ID を設定しておくと良いでしょう。 | 例として、"ping_pong" ネイティブアプリケーションのマニフェストを以下に示します: @@ -36,7 +36,7 @@ native messaging マニフェストは以下のプロパティを含む単一の "description": "Example host for native messaging", "path": "/path/to/native-messaging/app/ping_pong.py", "type": "stdio", - "allowed_extensions": [ "ping_pong@example.org" ] + "allowed_extensions": ["ping_pong@example.org"] } ``` @@ -60,8 +60,7 @@ managed storage マニフェストには次のプロパティを含む単一の "name": "favourite-colour-examples@mozilla.org", "description": "ignored", "type": "storage", - "data": - { + "data": { "colour": "management thinks it should be blue!" } } @@ -70,7 +69,7 @@ managed storage マニフェストには次のプロパティを含む単一の この JSON マニフェストでは、"favourite-colour-examples\@mozilla.org" 拡張機能は次のようなコードを使ってデータにアクセスできます: ```js -var storageItem = browser.storage.managed.get('colour'); +var storageItem = browser.storage.managed.get("colour"); storageItem.then((res) => { console.log(`Managed colour is: ${res.colour}`); }); diff --git a/files/ja/mozilla/add-ons/webextensions/native_messaging/index.md b/files/ja/mozilla/add-ons/webextensions/native_messaging/index.md index c3f18b3eb24ce1..df7a9dc4fde8c5 100644 --- a/files/ja/mozilla/add-ons/webextensions/native_messaging/index.md +++ b/files/ja/mozilla/add-ons/webextensions/native_messaging/index.md @@ -39,7 +39,6 @@ GitHub の "webextensions-examples" リポジトリーの ["`native-messaging`" ```json { - "description": "Native messaging example add-on", "manifest_version": 2, "name": "Native messaging example", @@ -64,7 +63,6 @@ GitHub の "webextensions-examples" リポジトリーの ["`native-messaging`" }, "permissions": ["nativeMessaging"] - } ``` @@ -88,7 +86,7 @@ GitHub の "webextensions-examples" リポジトリーの ["`native-messaging`" "description": "Example host for native messaging", "path": "/path/to/native-messaging/app/ping_pong.py", "type": "stdio", - "allowed_extensions": [ "ping_pong@example.org" ] + "allowed_extensions": ["ping_pong@example.org"] } ``` @@ -110,7 +108,7 @@ GitHub の "webextensions-examples" リポジトリーの ["`native-messaging`" "description": "Example host for native messaging", "path": "c:\\path\\to\\native-messaging\\app\\ping_pong_win.bat", "type": "stdio", - "allowed_extensions": [ "ping_pong@example.org" ] + "allowed_extensions": ["ping_pong@example.org"] } ``` @@ -223,9 +221,7 @@ On a click on the browser action, send the app a message. */ browser.browserAction.onClicked.addListener(() => { console.log("Sending: ping"); - let sending = browser.runtime.sendNativeMessage( - "ping_pong", - "ping"); + let sending = browser.runtime.sendNativeMessage("ping_pong", "ping"); sending.then(onResponse, onError); }); ``` @@ -244,62 +240,60 @@ browser.browserAction.onClicked.addListener(() => { #!/usr/local/bin/node (() => { + let payloadSize = null; + + // A queue to store the chunks as we read them from stdin. + // This queue can be flushed when `payloadSize` data has been read + let chunks = []; + + // Only read the size once for each payload + const sizeHasBeenRead = () => Boolean(payloadSize); + + // All the data has been read, reset everything for the next message + const flushChunksQueue = () => { + payloadSize = null; + chunks.splice(0); + }; + + const processData = () => { + // Create one big buffer with all the chunks + const stringData = Buffer.concat(chunks); + + // The browser will emit the size as a header of the payload, + // if it hasn't been read yet, do it. + // The next time we'll need to read the payload size is when all of the data + // of the current payload has been read (ie. data.length >= payloadSize + 4) + if (!sizeHasBeenRead()) { + payloadSize = stringData.readUInt32LE(0); + } + + // If the data we have read so far is >= to the size advertised in the header, + // it means we have all of the data sent. + // We add 4 here because that's the size of the bytes that old the payloadSize + if (stringData.length >= payloadSize + 4) { + // Remove the header + const contentWithoutSize = stringData.slice(4, payloadSize + 4); + + // Reset the read size and the queued chunks + flushChunksQueue(); + + const json = JSON.parse(contentWithoutSize); + // Do something with the data… + } + }; + + process.stdin.on("readable", () => { + // A temporary variable holding the nodejs.Buffer of each + // chunk of data read off stdin + let chunk = null; + + // Read all of the available data + while ((chunk = process.stdin.read()) !== null) { + chunks.push(chunk); + } - let payloadSize = null; - - // A queue to store the chunks as we read them from stdin. - // This queue can be flushed when `payloadSize` data has been read - let chunks = []; - - // Only read the size once for each payload - const sizeHasBeenRead = () => Boolean(payloadSize); - - // All the data has been read, reset everything for the next message - const flushChunksQueue = () => { - payloadSize = null; - chunks.splice(0); - }; - - const processData = () => { - // Create one big buffer with all the chunks - const stringData = Buffer.concat(chunks); - - // The browser will emit the size as a header of the payload, - // if it hasn't been read yet, do it. - // The next time we'll need to read the payload size is when all of the data - // of the current payload has been read (ie. data.length >= payloadSize + 4) - if (!sizeHasBeenRead()) { - payloadSize = stringData.readUInt32LE(0); - } - - // If the data we have read so far is >= to the size advertised in the header, - // it means we have all of the data sent. - // We add 4 here because that's the size of the bytes that old the payloadSize - if (stringData.length >= (payloadSize + 4)) { - // Remove the header - const contentWithoutSize = stringData.slice(4, (payloadSize + 4)); - - // Reset the read size and the queued chunks - flushChunksQueue(); - - const json = JSON.parse(contentWithoutSize); - // Do something with the data… - } - }; - - process.stdin.on('readable', () => { - // A temporary variable holding the nodejs.Buffer of each - // chunk of data read off stdin - let chunk = null; - - // Read all of the available data - while ((chunk = process.stdin.read()) !== null) { - chunks.push(chunk); - } - - processData(); - - }); + processData(); + }); })(); ``` @@ -394,7 +388,7 @@ while True: ネイティブアプリケーションを閉じるためには、次のようにします。 - OS X や Linux のような \*nix システムでは、ブラウザーはネイティブアプリケーションが正しく終了する機会を与えるために SIGTERM を送信し、その後 SIGKILL を送信します。これらのシグナルは新しいプロセスグループを作成して分けない限りすべてのサブプロセスに伝播します。 -- Windows では、ブラウザーはネイティブアプリケーションのプロセスを [Job オブジェクト](https://msdn.microsoft.com/en-us/library/windows/desktop/ms684161(v=vs.85).aspx)とし、ジョブを kill します。 ネイティブアプリケーションが追加でプロセスを立ち上げ、アプリケーション自体が kill された後もそのままにしたい場合、ネイティブアプリケーションは追加のプロセスを [`CREATE_BREAKAWAY_FROM_JOB`]() フラグを立てて立ち上げる必要があります。 +- Windows では、ブラウザーはネイティブアプリケーションのプロセスを [Job オブジェクト]()とし、ジョブを kill します。 ネイティブアプリケーションが追加でプロセスを立ち上げ、アプリケーション自体が kill された後もそのままにしたい場合、ネイティブアプリケーションは追加のプロセスを [`CREATE_BREAKAWAY_FROM_JOB`]() フラグを立てて立ち上げる必要があります。 ## トラブルシューティング diff --git a/files/ja/mozilla/add-ons/webextensions/user_interface/context_menu_items/index.md b/files/ja/mozilla/add-ons/webextensions/user_interface/context_menu_items/index.md index 5f8319e6a7e819..005fca1f548070 100644 --- a/files/ja/mozilla/add-ons/webextensions/user_interface/context_menu_items/index.md +++ b/files/ja/mozilla/add-ons/webextensions/user_interface/context_menu_items/index.md @@ -26,11 +26,14 @@ slug: Mozilla/Add-ons/WebExtensions/user_interface/Context_menu_items 次に、拡張機能のバックグラウンドスクリプト内にコンテキストメニューを追加(および更新、削除)することもできます。メニュー項目を作成するには id、タイトル、表示するコンテキストメニューを指定します。 ```js -browser.contextMenus.create({ - id: "log-selection", - title: browser.i18n.getMessage("contextMenuItemSelectionLogger"), - contexts: ["selection"] -}, onCreated); +browser.contextMenus.create( + { + id: "log-selection", + title: browser.i18n.getMessage("contextMenuItemSelectionLogger"), + contexts: ["selection"], + }, + onCreated, +); ``` そして、拡張機能はメニュー項目がクリックされるのを待ち受けします。クリックされた項目、クリックされたコンテキスト、クリックされたタブの詳細に関する渡された情報は、適切な拡張機能を呼び出すために使用されます。 diff --git a/files/ja/mozilla/add-ons/webextensions/user_interface/devtools_panels/index.md b/files/ja/mozilla/add-ons/webextensions/user_interface/devtools_panels/index.md index 21983f79030bf6..50f02196b155fb 100644 --- a/files/ja/mozilla/add-ons/webextensions/user_interface/devtools_panels/index.md +++ b/files/ja/mozilla/add-ons/webextensions/user_interface/devtools_panels/index.md @@ -40,14 +40,16 @@ function handleHidden() { console.log("panel is being hidden"); } -browser.devtools.panels.create( - "My Panel", // title - "icons/star.png", // icon - "devtools/panel/panel.html" // content -).then((newPanel) => { - newPanel.onShown.addListener(handleShown); - newPanel.onHidden.addListener(handleHidden); -}); +browser.devtools.panels + .create( + "My Panel", // title + "icons/star.png", // icon + "devtools/panel/panel.html", // content + ) + .then((newPanel) => { + newPanel.onShown.addListener(handleShown); + newPanel.onHidden.addListener(handleHidden); + }); ``` 拡張機能はインスペクターウィンドウの中で [`devtools.inspectedWindow.eval()`](/ja/docs/Mozilla/Add-ons/WebExtensions/API/devtools/inspectedWindow/eval) を使うか、バックグラウンドスクリプトからメッセージを渡してコンテンツスクリプトに挿入することで、コードを実行することができます。この方法のより詳しくは[開発ツールの拡張](/ja/docs/Mozilla/Add-ons/WebExtensions/Extending_the_developer_tools)を参照してください。 diff --git a/files/ja/mozilla/add-ons/webextensions/user_interface/extension_pages/index.md b/files/ja/mozilla/add-ons/webextensions/user_interface/extension_pages/index.md index 666418db6fd6c0..38da7d8e10a4d3 100644 --- a/files/ja/mozilla/add-ons/webextensions/user_interface/extension_pages/index.md +++ b/files/ja/mozilla/add-ons/webextensions/user_interface/extension_pages/index.md @@ -35,7 +35,7 @@ let createData = { type: "detached_panel", url: "panel.html", width: 250, - height: 100 + height: 100, }; let creating = browser.windows.create(createData); ``` @@ -45,7 +45,7 @@ let creating = browser.windows.create(createData); 例えば、以下の例では、ユーザーがボタンをクリックしたときに {{WebExtAPIRef("windows.remove()")}} にウィンドウ の ID を渡しています。 ```js -document.getElementById("closeme").addEventListener("click", function(){ +document.getElementById("closeme").addEventListener("click", function () { let winId = browser.windows.WINDOW_ID_CURRENT; let removing = browser.windows.remove(winId); }); @@ -58,7 +58,7 @@ document.getElementById("closeme").addEventListener("click", function(){ ```js function onVisited(historyItem) { if (historyItem.url == browser.extension.getURL(myPage)) { - browser.history.deleteUrl({url: historyItem.url}); + browser.history.deleteUrl({ url: historyItem.url }); } } diff --git a/files/ja/mozilla/add-ons/webextensions/user_interface/notifications/index.md b/files/ja/mozilla/add-ons/webextensions/user_interface/notifications/index.md index f16001cadbcd5a..f9def9e7f6588a 100644 --- a/files/ja/mozilla/add-ons/webextensions/user_interface/notifications/index.md +++ b/files/ja/mozilla/add-ons/webextensions/user_interface/notifications/index.md @@ -25,10 +25,10 @@ slug: Mozilla/Add-ons/WebExtensions/user_interface/Notifications let title = browser.i18n.getMessage("notificationTitle"); let content = browser.i18n.getMessage("notificationContent", message.url); browser.notifications.create({ - "type": "basic", - "iconUrl": browser.extension.getURL("icons/link-48.png"), - "title": title, - "message": content + type: "basic", + iconUrl: browser.extension.getURL("icons/link-48.png"), + title: title, + message: content, }); ``` diff --git a/files/ja/mozilla/add-ons/webextensions/user_interface/options_pages/index.md b/files/ja/mozilla/add-ons/webextensions/user_interface/options_pages/index.md index e867291e857df5..97b89abe241922 100644 --- a/files/ja/mozilla/add-ons/webextensions/user_interface/options_pages/index.md +++ b/files/ja/mozilla/add-ons/webextensions/user_interface/options_pages/index.md @@ -20,17 +20,17 @@ slug: Mozilla/Add-ons/WebExtensions/user_interface/Options_pages オプションページを作成するには、ページを定義する HTML を書きます。このページは通常のページと同様に、 CSS と JavaScript ファイルを入れることができます。このページは、 [favourite-color](https://github.com/mdn/webextensions-examples/tree/master/favourite-colour) の例から取ってきていて、 JavaScript ファイルが含まれています。 ```html - + - +
- + diff --git a/files/ja/mozilla/add-ons/webextensions/user_interface/sidebars/index.md b/files/ja/mozilla/add-ons/webextensions/user_interface/sidebars/index.md index 480265d6f0e78c..33fa4f04116ceb 100644 --- a/files/ja/mozilla/add-ons/webextensions/user_interface/sidebars/index.md +++ b/files/ja/mozilla/add-ons/webextensions/user_interface/sidebars/index.md @@ -21,7 +21,7 @@ slug: Mozilla/Add-ons/WebExtensions/user_interface/Sidebars ```js // sidebar.js -browser.windows.getCurrent({populate: true}).then((windowInfo) => { +browser.windows.getCurrent({ populate: true }).then((windowInfo) => { myWindowId = windowInfo.id; }); ``` diff --git a/files/ja/mozilla/add-ons/webextensions/work_with_the_bookmarks_api/index.md b/files/ja/mozilla/add-ons/webextensions/work_with_the_bookmarks_api/index.md index fbf8f6860f1f37..2b7cc633fb3360 100644 --- a/files/ja/mozilla/add-ons/webextensions/work_with_the_bookmarks_api/index.md +++ b/files/ja/mozilla/add-ons/webextensions/work_with_the_bookmarks_api/index.md @@ -114,8 +114,11 @@ Bookmarks API の使い方を理解するため、[bookmark-it](https://github.c 他のバックグラウンドスクリプトと同様に、[background.js](https://github.com/mdn/webextensions-examples/blob/master/bookmark-it/background.js) は拡張機能が開始してすぐに実行されます。最初にスクリプトは `updateActiveTab()` を呼び出し、ここでは {{WebExtAPIRef("tabs.query")}} を使って現在のタブの `Tabs` オブジェクトを取得して開始し、そのオブジェクトを `updatetab()` に渡します、コードは次の通り: ```js - var gettingActiveTab = browser.tabs.query({active: true, currentWindow: true}); - gettingActiveTab.then(updateTab); +var gettingActiveTab = browser.tabs.query({ + active: true, + currentWindow: true, +}); +gettingActiveTab.then(updateTab); ``` `updatetab()` は 最初にアクティブなタブの URL を `isSupportedProtocol()` に渡します: @@ -130,12 +133,12 @@ Bookmarks API の使い方を理解するため、[bookmark-it](https://github.c `isSupportedProtocol()` はアクティブタブに表示される URL がブックマークできるかを決めます。タブの URL からプロトコルを抽出するために、拡張機能は [HTMLHyperlinkElementUtils](/ja/docs/Web/API/HTMLHyperlinkElementUtils) を利用して `` 要素にタブの URL を追加してから、`protocol` プロパティを使ってプロトコルを取得します。 ```js - function isSupportedProtocol(urlString) { - var supportedProtocols = ["https:", "http:", "ftp:", "file:"]; - var url = document.createElement('a'); - url.href = urlString; - return supportedProtocols.indexOf(url.protocol) != -1; - } +function isSupportedProtocol(urlString) { + var supportedProtocols = ["https:", "http:", "ftp:", "file:"]; + var url = document.createElement("a"); + url.href = urlString; + return supportedProtocols.indexOf(url.protocol) != -1; +} ``` ブックマークがプロトコルをサポートしている場合、拡張機能はタブの URL がブックマーク済みかどうかを決めて、その場合に `updateIcon()` を呼び出します: @@ -152,19 +155,21 @@ Bookmarks API の使い方を理解するため、[bookmark-it](https://github.c ```js function updateIcon() { browser.browserAction.setIcon({ - path: currentBookmark ? { - 19: "icons/star-filled-19.png", - 38: "icons/star-filled-38.png" - } : { - 19: "icons/star-empty-19.png", - 38: "icons/star-empty-38.png" - }, - tabId: currentTab.id + path: currentBookmark + ? { + 19: "icons/star-filled-19.png", + 38: "icons/star-filled-38.png", + } + : { + 19: "icons/star-empty-19.png", + 38: "icons/star-empty-38.png", + }, + tabId: currentTab.id, }); browser.browserAction.setTitle({ // Screen readers can see the title - title: currentBookmark ? 'Unbookmark it!' : 'Bookmark it!', - tabId: currentTab.id + title: currentBookmark ? "Unbookmark it!" : "Bookmark it!", + tabId: currentTab.id, }); } ``` @@ -182,7 +187,7 @@ function toggleBookmark() { if (currentBookmark) { browser.bookmarks.remove(currentBookmark.id); } else { - browser.bookmarks.create({title: currentTab.title, url: currentTab.url}); + browser.bookmarks.create({ title: currentTab.title, url: currentTab.url }); } } ``` diff --git a/files/ja/mozilla/add-ons/webextensions/working_with_files/index.md b/files/ja/mozilla/add-ons/webextensions/working_with_files/index.md index eb32172a12b34b..4caafc72372307 100644 --- a/files/ja/mozilla/add-ons/webextensions/working_with_files/index.md +++ b/files/ja/mozilla/add-ons/webextensions/working_with_files/index.md @@ -20,7 +20,7 @@ slug: Mozilla/Add-ons/WebExtensions/Working_with_files この仕組みでは、あなたのウェブサイト(や URL で決められたあらゆる場所)からユーザーのコンピューターにファイルを入手できます。主要なメソッドは {{WebExtAPIRef("downloads.download()")}} で、その簡単なフォームで URL を受け付けて、その URL からユーザーの既定のダウンロードフォルダーにファイルをダウンロードします: ```js -browser.downloads.download({url: "https://example.org/image.png"}) +browser.downloads.download({ url: "https://example.org/image.png" }); ``` ユーザーが `saveAs` パラメーターで指定した場所にダウンロードさせることもできます。 @@ -78,11 +78,11 @@ Store Collected Images の例では、画像コンテキストメニューを使 ```js async function saveCollectedBlobs(collectionName, collectedBlobs) { - const storedImages = await getFileStorage({name: "stored-images"}); + const storedImages = await getFileStorage({ name: "stored-images" }); - for (const item of collectedBlobs) { + for (const item of collectedBlobs) { await storedImages.put(`${collectionName}/${item.uuid}`, item.blob); - } + } } ``` @@ -92,15 +92,15 @@ async function saveCollectedBlobs(collectionName, collectedBlobs) { ```js export async function loadStoredImages(filter) { - const imagesStore = await getFileStorage({name: "stored-images"}); - let listOptions = filter ? {includes: filter} : undefined; - const imagesList = await imagesStore.list(listOptions); - let storedImages = []; - for (const storedName of imagesList) { + const imagesStore = await getFileStorage({ name: "stored-images" }); + let listOptions = filter ? { includes: filter } : undefined; + const imagesList = await imagesStore.list(listOptions); + let storedImages = []; + for (const storedName of imagesList) { const blob = await imagesStore.get(storedName); - storedImages.push({storedName, blobUrl: URL.createObjectURL(blob)}); - } - return storedImages; + storedImages.push({ storedName, blobUrl: URL.createObjectURL(blob) }); + } + return storedImages; } ``` @@ -112,11 +112,11 @@ Note the use of [URL.createObjectURL(blob)](/ja/docs/Web/API/URL/createObjectURL ```js async function removeStoredImages(storedImages) { - const imagesStore = await getFileStorage({name: "stored-images"}); - for (const storedImage of storedImages) { + const imagesStore = await getFileStorage({ name: "stored-images" }); + for (const storedImage of storedImages) { URL.revokeObjectURL(storedImage.blobUrl); await imagesStore.remove(storedImage.storedName); - } + } } ``` diff --git a/files/ja/mozilla/add-ons/webextensions/working_with_the_tabs_api/index.md b/files/ja/mozilla/add-ons/webextensions/working_with_the_tabs_api/index.md index 7d269d452416ae..fe460eba09a335 100644 --- a/files/ja/mozilla/add-ons/webextensions/working_with_the_tabs_api/index.md +++ b/files/ja/mozilla/add-ons/webextensions/working_with_the_tabs_api/index.md @@ -71,9 +71,7 @@ Tabs API 機能の大半では権限は不要ですが、次の例外はあり "homepage_url": "https://github.com/mdn/webextensions-examples/tree/master/tabs-tabs-tabs", "manifest_version": 2, "name": "Tabs, tabs, tabs", - "permissions": [ - "tabs" - ], + "permissions": ["tabs"], "version": "1.0" } ``` @@ -88,43 +86,35 @@ Tabs API 機能の大半では権限は不要ですが、次の例外はあり tabs.html では拡張機能のポップアップのコンテンツを定義します。 ```html - + + + + + - - - - + +
+
+
Tabs-tabs-tabs
+
- +
Move active tab to the beginning of the window
-
-
-
Tabs-tabs-tabs
-
- - Move active tab to the beginning of the window
- - -… - -Define the other menu items -… - -
+ … Define the other menu items … -

Switch to tab

- -
+
+

Switch to tab

+
+
-
- - - - + + ``` @@ -150,7 +140,7 @@ document.addEventListener("DOMContentLoaded", listTabs); ```js function getCurrentWindowTabs() { - return browser.tabs.query({currentWindow: true}); + return browser.tabs.query({ currentWindow: true }); } ``` @@ -179,24 +169,23 @@ function listTabs() { 1. {{WebExtAPIRef("tabs.Tab")}} オブジェクトからの最初の 5 項目でループする。 2. 各項目ごとに、文書のフラグメントのハイパーリンクを追加する。 - - リンクのラベル—つまり、そのテキスト—が、タブのタイトル (ない場合はその ID)を使って、セットされる - - タブの ID を使ってリンクのアドレスがセットされる。 + - リンクのラベル—つまり、そのテキスト—が、タブのタイトル (ない場合はその ID)を使って、セットされる + - タブの ID を使ってリンクのアドレスがセットされる。 ```js - for (let tab of tabs) { - if (!tab.active && counter <= limit) { - let tabLink = document.createElement('a'); +for (let tab of tabs) { + if (!tab.active && counter <= limit) { + let tabLink = document.createElement("a"); - tabLink.textContent = tab.title || tab.id; + tabLink.textContent = tab.title || tab.id; - tabLink.setAttribute('href', tab.id); - tabLink.classList.add('switch-tabs'); - currentTabs.appendChild(tabLink); - } - - counter += 1; + tabLink.setAttribute("href", tab.id); + tabLink.classList.add("switch-tabs"); + currentTabs.appendChild(tabLink); + } - } + counter += 1; +} ``` 最後に、`tabs-list` div に文書のフラグメントが書き込まれる: @@ -282,16 +271,18 @@ None of the functions require a permission to operate, so there are no features tabs.html defines the "menu" displayed in the popup, which includes the "Move active tab to the beginning of the window list" option, with a series of `` tags grouped by a visual separator. Each menu item is given an ID, which is used in tabs.js to determine which menu item is being requested. ```html - Move active tab to the beginning of the window
- Move active tab to the end of the window
- -
+Move active tab to the beginning of the window
+Move active tab to the end of the window
+
- Duplicate active tab
+Duplicate active tab
- Reload active tab
- Alert active tab info
+Reload active tab
+Alert active tab info
``` #### [tabs.js](https://github.com/mdn/webextensions-examples/blob/master/tabs-tabs-tabs/tabs.js) @@ -318,16 +309,16 @@ A series of `if` statements then look to match the ID of the item clicked. This code snippet is for the "Move active tab to the beginning of the window list" option: ```js - if (e.target.id === "tabs-move-beginning") { - callOnActiveTab((tab, tabs) => { - var index = 0; - if (!tab.pinned) { - index = firstUnpinnedTab(tabs); - } - console.log(`moving ${tab.id} to ${index}`) - browser.tabs.move([tab.id], {index}); - }); - } +if (e.target.id === "tabs-move-beginning") { + callOnActiveTab((tab, tabs) => { + var index = 0; + if (!tab.pinned) { + index = firstUnpinnedTab(tabs); + } + console.log(`moving ${tab.id} to ${index}`); + browser.tabs.move([tab.id], { index }); + }); +} ``` It's worth noting the use of `console.log()`. This enables you to output information to the [debugger](/ja/docs/Mozilla/Add-ons/WebExtensions/Debugging) console, which can be useful when resolving issues found during development. @@ -337,15 +328,15 @@ It's worth noting the use of `console.log()`. This enables you to output informa The move code first calls `callOnActiveTab()` which in turn calls `getCurrentWindowTabs()` to get a {{WebExtAPIRef("tabs.Tab")}} object containing the active window's tabs. It then loops through the object to find and return the active tab object: ```js - function callOnActiveTab(callback) { - getCurrentWindowTabs().then((tabs) => { - for (var tab of tabs) { - if (tab.active) { - callback(tab, tabs); - } - } - }); - } +function callOnActiveTab(callback) { + getCurrentWindowTabs().then((tabs) => { + for (var tab of tabs) { + if (tab.active) { + callback(tab, tabs); + } + } + }); +} ``` ##### ピン止めされたタブ @@ -354,18 +345,18 @@ A feature of tabs is that the user can _pin_ tabs in a window. Pinned tabs are p ```js function firstUnpinnedTab(tabs) { - for (var tab of tabs) { - if (!tab.pinned) { - return tab.index; - } - } + for (var tab of tabs) { + if (!tab.pinned) { + return tab.index; + } + } } ``` We now have everything needed to move the tab: the active tab object from which we can get the tab ID and the position the tab is to be moved to. So, we can implement the move: ```js - browser.tabs.move([tab.id], {index}); +browser.tabs.move([tab.id], { index }); ``` The remaining functions to duplicate, reload, create, and remove tabs are implemented similarly. @@ -462,27 +453,21 @@ The latter is the most useful, as it allows an extension to use {{WebExtAPIRef(" { "description": "Adds a page action to toggle applying CSS to pages.", - "manifest_version": 2, - "name": "apply-css", - "version": "1.0", - "homepage_url": "https://github.com/mdn/webextensions-examples/tree/master/apply-css", - - "background": { + "manifest_version": 2, + "name": "apply-css", + "version": "1.0", + "homepage_url": "https://github.com/mdn/webextensions-examples/tree/master/apply-css", + "background": { "scripts": ["background.js"] - }, - - "page_action": { + }, + "page_action": { "default_icon": "icons/off.svg", "browser_style": true - }, - - "permissions": [ - "activeTab", - "tabs" - ] + }, + "permissions": ["activeTab", "tabs"] } ``` @@ -510,9 +495,9 @@ When first loaded, the extension uses {{WebExtAPIRef("tabs.query")}} to get a li var gettingAllTabs = browser.tabs.query({}); gettingAllTabs.then((tabs) => { - for (let tab of tabs) { - initializePageAction(tab); - } + for (let tab of tabs) { + initializePageAction(tab); + } }); ``` @@ -520,9 +505,9 @@ gettingAllTabs.then((tabs) => { ```js function protocolIsApplicable(url) { - var anchor = document.createElement('a'); - anchor.href = url; - return APPLICABLE_PROTOCOLS.includes(anchor.protocol); + var anchor = document.createElement("a"); + anchor.href = url; + return APPLICABLE_PROTOCOLS.includes(anchor.protocol); } ``` @@ -530,12 +515,11 @@ Then, if the example can act on the tab, `initializePageAction()` sets the tab's ```js function initializePageAction(tab) { - - if (protocolIsApplicable(tab.url)) { - browser.pageAction.setIcon({tabId: tab.id, path: "icons/off.svg"}); - browser.pageAction.setTitle({tabId: tab.id, title: TITLE_APPLY}); - browser.pageAction.show(tab.id); - } + if (protocolIsApplicable(tab.url)) { + browser.pageAction.setIcon({ tabId: tab.id, path: "icons/off.svg" }); + browser.pageAction.setTitle({ tabId: tab.id, title: TITLE_APPLY }); + browser.pageAction.show(tab.id); + } } ``` @@ -559,24 +543,21 @@ browser.pageAction.onClicked.addListener(toggleCSS); ```js function toggleCSS(tab) { - - - function gotTitle(title) { - + function gotTitle(title) { if (title === TITLE_APPLY) { - browser.pageAction.setIcon({tabId: tab.id, path: "icons/on.svg"}); - browser.pageAction.setTitle({tabId: tab.id, title: TITLE_REMOVE}); - browser.tabs.insertCSS({code: CSS}); + browser.pageAction.setIcon({ tabId: tab.id, path: "icons/on.svg" }); + browser.pageAction.setTitle({ tabId: tab.id, title: TITLE_REMOVE }); + browser.tabs.insertCSS({ code: CSS }); } else { - browser.pageAction.setIcon({tabId: tab.id, path: "icons/off.svg"}); - browser.pageAction.setTitle({tabId: tab.id, title: TITLE_APPLY}); - browser.tabs.removeCSS({code: CSS}); + browser.pageAction.setIcon({ tabId: tab.id, path: "icons/off.svg" }); + browser.pageAction.setTitle({ tabId: tab.id, title: TITLE_APPLY }); + browser.tabs.removeCSS({ code: CSS }); } - } + } - var gettingTitle = browser.pageAction.getTitle({tabId: tab.id}); + var gettingTitle = browser.pageAction.getTitle({ tabId: tab.id }); - gettingTitle.then(gotTitle); + gettingTitle.then(gotTitle); } ``` @@ -584,7 +565,7 @@ Finally, to ensure that the `pageAction` is valid after each update to the tab, ```js browser.tabs.onUpdated.addListener((id, changeInfo, tab) => { - initializePageAction(tab); + initializePageAction(tab); }); ``` diff --git a/files/ja/mozilla/add-ons/webextensions/your_first_webextension/index.md b/files/ja/mozilla/add-ons/webextensions/your_first_webextension/index.md index 363181aec66e62..bf87472368ecec 100644 --- a/files/ja/mozilla/add-ons/webextensions/your_first_webextension/index.md +++ b/files/ja/mozilla/add-ons/webextensions/your_first_webextension/index.md @@ -26,7 +26,6 @@ cd borderify ```json { - "manifest_version": 2, "name": "Borderify", "version": "1.0", @@ -43,7 +42,6 @@ cd borderify "js": ["borderify.js"] } ] - } ``` diff --git a/files/ja/mozilla/add-ons/webextensions/your_second_webextension/index.md b/files/ja/mozilla/add-ons/webextensions/your_second_webextension/index.md index 84b4a2ccb07ad9..1d052596e268b1 100644 --- a/files/ja/mozilla/add-ons/webextensions/your_second_webextension/index.md +++ b/files/ja/mozilla/add-ons/webextensions/your_second_webextension/index.md @@ -65,9 +65,7 @@ cd beastify "48": "icons/beasts-48.png" }, - "permissions": [ - "activeTab" - ], + "permissions": ["activeTab"], "browser_action": { "default_icon": "icons/beasts-32.png", @@ -141,7 +139,7 @@ touch choose_beast.html choose_beast.css choose_beast.js HTML ファイルは次のようになります。 ```html - + @@ -190,19 +188,19 @@ button { text-align: center; font-size: 1.5em; cursor: pointer; - background-color: #E5F2F2; + background-color: #e5f2f2; } button:hover { - background-color: #CFF2F2; + background-color: #cff2f2; } button[type="reset"] { - background-color: #FBFBC9; + background-color: #fbfbc9; } button[type="reset"]:hover { - background-color: #EAEA9D; + background-color: #eaea9d; } ``` @@ -249,7 +247,7 @@ function listenForClicks() { let url = beastNameToURL(e.target.textContent); browser.tabs.sendMessage(tabs[0].id, { command: "beastify", - beastURL: url + beastURL: url, }); }); }