[Chrome Extension] Chrome Storage CRUD
20133 ワード
💡 Chrome Storageで拡張したCRUD
[FE] HTML/CSS [BE] Javascript/JQuery [DB] Chrome Storage Chrome Extension ( MV3 ) [ manifest.json ]
default popup:拡張プラグインアイコンをクリックして開くポップアップファイルパス [ Popup HTML ]
ラベルリスト を入力するには、Inputラベルを追加します.
動的表示タブリストの表tbody宣言 JQueryスクリプト宣言 Popup.htmlで使用するポップアップウィンドウ.js宣言 [ Popup JS ]
localStorageに似た記憶領域 は、 をキー値ペアとして記憶する. sync:Chromeブラウザにログインするユーザー単位(ローカル単位より大きい!)
local:装置単位 は使用明細書を格納する.jsonへの権限の追加
の場合:RDBに詳しい私にとって、キー値形式の記憶は非常によく知られていません. レッスン:記憶中の数字をIDとして記憶しようとしましたが、結果はさらに複雑になりました...!
ソリューション:urlに一意の値しか入力しないので、キーと値をurlとして保存します. の場合:動的に追加されたButton ElementにClick Event を追加するコース インライン関数の追加→chromeポリシーを使用して を実行できません. addEventHandler→DOMオブジェクトのライフサイクルの問題により、新しく作成されたElementにイベントが発生しません.
ソリューション:動的に生成されたオブジェクトであっても、クラスベースのすべてのイベントを適用できるように、ドキュメントを変更します. [結果]
[環境]
[ manifest.json ]
Chrome Extensionスケルトンのような存在Manifestjsonを作成!
manifestに記入するだけでChrome Extensionビューアプリケーションにアップロードできます.{
"name": "Docong",
"description": "Docong Extension",
"version": "1.0",
"manifest_version": 3",
"action": {
"default_popup": "popup.html"
}
}
{
"name": "Docong",
"description": "Docong Extension",
"version": "1.0",
"manifest_version": 3",
"action": {
"default_popup": "popup.html"
}
}
[ Popup HTML ]
アイコンクリック時に表示されるポップアップHTML<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
/* ... */
</style>
</head>
<body>
<div id="container">
<div id="add">
<form id="add_form">
<input class="add_rec_input" type="text" name="url" id="url" placeholder="URL">
<br>
<br>
<button type="submit">Add</button>
<button id="deleteAll">초기화</button>
</form>
</div>
<div>
<table>
<tbody id ="list" >
</tbody>
</table>
</div>
</div>
<script src="js/jquery-3.6.0.min.js"></script>
<script src="js/popup.js"></script>
</body>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
/* ... */
</style>
</head>
<body>
<div id="container">
<div id="add">
<form id="add_form">
<input class="add_rec_input" type="text" name="url" id="url" placeholder="URL">
<br>
<br>
<button type="submit">Add</button>
<button id="deleteAll">초기화</button>
</form>
</div>
<div>
<table>
<tbody id ="list" >
</tbody>
</table>
</div>
</div>
<script src="js/jquery-3.6.0.min.js"></script>
<script src="js/popup.js"></script>
</body>
動的表示
[ Popup JS ]
Popup HTMLで使用されるJQueryコード// Dom Load
$(document).ready(()=>{makeList();})
// Add URL Data
$(document).on('submit', '#add_form', (e)=>{
e.preventDefault();
const form_data = new FormData(document.getElementById('add_form'));
var url = form_data.get('url');
chrome.storage.sync.set({
[url]:url
});
makeList();
})
// Clear Storage
$(document).on('click', '#deleteAll', (e)=>{
chrome.storage.sync.clear();
makeList();
})
// Delete List
$(document).on('click', '.listItem', (e)=>{
chrome.storage.sync.remove($(e.target).val());
makeList();
})
const makeList = () => {
chrome.storage.sync.get((result) => {
listHtml = "";
for(value in result){
listHtml += "<tr>";
listHtml += "<td>"+value+"</td>";
listHtml += "<td><button class='listItem' value="+value+">X</button></td>";
listHtml += "</tr>";
}
$("#list").html(listHtml);
});
}
Chrome Storage
// Dom Load
$(document).ready(()=>{makeList();})
// Add URL Data
$(document).on('submit', '#add_form', (e)=>{
e.preventDefault();
const form_data = new FormData(document.getElementById('add_form'));
var url = form_data.get('url');
chrome.storage.sync.set({
[url]:url
});
makeList();
})
// Clear Storage
$(document).on('click', '#deleteAll', (e)=>{
chrome.storage.sync.clear();
makeList();
})
// Delete List
$(document).on('click', '.listItem', (e)=>{
chrome.storage.sync.remove($(e.target).val());
makeList();
})
const makeList = () => {
chrome.storage.sync.get((result) => {
listHtml = "";
for(value in result){
listHtml += "<tr>";
listHtml += "<td>"+value+"</td>";
listHtml += "<td><button class='listItem' value="+value+">X</button></td>";
listHtml += "</tr>";
}
$("#list").html(listHtml);
});
}
local:装置単位
/* manifest.json */
...
"permissions":[
"storage"
],
...
More: https://developer.chrome.com/docs/extensions/reference/storage/ Problems
ストレージストレージ
動的要素イベント
[結果]
Reference
この問題について([Chrome Extension] Chrome Storage CRUD), 我々は、より多くの情報をここで見つけました
https://velog.io/@dot2__/Chrome-Extension-Chrome-Storage-CRUD
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
Reference
この問題について([Chrome Extension] Chrome Storage CRUD), 我々は、より多くの情報をここで見つけました https://velog.io/@dot2__/Chrome-Extension-Chrome-Storage-CRUDテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol