soiz1 commited on
Commit
a0414b3
·
verified ·
1 Parent(s): e7d3130

Update src/addons/addons/save-to-google/userscript.js

Browse files
src/addons/addons/save-to-google/userscript.js CHANGED
@@ -1,50 +1,38 @@
1
  export default async ({ addon, console, msg }) => {
2
- // 永続的に対象要素が出現するのを待つループ
3
  while (true) {
4
- // 対象のメニュー要素を待機
5
- const targetElem = await addon.tab.waitForElement(
6
  'div[class*="menu-bar_file-group"] > div:last-child:not(.sa-record)',
7
  { markAsSeen: true }
8
  );
9
 
10
- // 同じボタンが複数作られないようにチェック
11
- if (!document.querySelector('.sa-custom-modal-button')) {
12
- // ボタン要素を作成
13
- const button = document.createElement("div");
14
- button.className = "sa-custom-modal-button " + targetElem.className;
15
- button.textContent = msg("open-modal"); // ローカライズされた文字列
16
- button.style.cursor = "pointer";
17
 
18
- // ボタンがクリックされたときにモーダルを表示するイベントリスナー
19
- button.addEventListener("click", () => {
20
- // モーダルを作成(addon.tab.createModalを利用)
21
- const { backdrop, container, content, closeButton, remove } = addon.tab.createModal(
22
- msg("modal-title"), // モーダルのタイトル
23
- { isOpen: true, useEditorClasses: true }
24
- );
25
 
26
- // モーダル内に任意のHTMLを設定
27
- content.innerHTML = `
28
- <div>
29
- <h1>${msg("modal-header")}</h1>
30
- <p>${msg("modal-description")}</p>
31
- <button id="modal-ok-button">${msg("ok")}</button>
32
- </div>
33
- `;
34
 
35
- // 「OK」ボタンがクリックされたらモーダルを閉じる
36
- const okButton = content.querySelector("#modal-ok-button");
37
- if (okButton) {
38
- okButton.addEventListener("click", () => remove());
39
- }
40
 
41
- // バックドロップやクローズボタンをクリックした場合もモーダルを閉じる
42
- backdrop.addEventListener("click", () => remove());
43
- closeButton.addEventListener("click", () => remove());
44
- });
45
 
46
- // 対象の親要素にボタンを追加
47
- targetElem.parentElement.appendChild(button);
48
- }
49
  }
50
  };
 
1
  export default async ({ addon, console, msg }) => {
 
2
  while (true) {
3
+ // 指定したセレクタの要素を待機
4
+ const elem = await addon.tab.waitForElement(
5
  'div[class*="menu-bar_file-group"] > div:last-child:not(.sa-record)',
6
  { markAsSeen: true }
7
  );
8
 
9
+ // ボタン要素を作成
10
+ const buttonElem = document.createElement("button");
11
+ buttonElem.textContent = msg("モーダルを表示"); // ボタンに表示するテキスト
12
+ buttonElem.classList.add("sa-modal-button"); // 任意のクラス(スタイル用)
 
 
 
13
 
14
+ // クリック時の処理:モーダルを作成してHTMLを表示
15
+ buttonElem.addEventListener("click", () => {
16
+ const { backdrop, container, content, closeButton, remove } = addon.tab.createModal(
17
+ msg("モーダルタイトル"),
18
+ { isOpen: true, useEditorClasses: true }
19
+ );
 
20
 
21
+ // モーダル内に任意のHTMLコンテンツを設定
22
+ content.innerHTML = `
23
+ <h1>モーダルの見出し</h1>
24
+ <p>これはHTMLコンテンツを含むモーダルの例です。</p>
25
+ `;
 
 
 
26
 
27
+ // 背景や閉じるボタンをクリックしたときにモーダルを閉じる
28
+ backdrop.addEventListener("click", remove);
29
+ closeButton.addEventListener("click", remove);
30
+ });
 
31
 
32
+ // 指定の要素の親要素にボタンを追加(メニューバーに配置)
33
+ elem.parentElement.appendChild(buttonElem);
 
 
34
 
35
+ // 同じ処理を重複して実行しないよう、少し待ってからループを再開
36
+ await new Promise((resolve) => setTimeout(resolve, 1000));
 
37
  }
38
  };