diff --git a/globals.js b/globals.js
index d7dd214..8dc2029 100644
--- a/globals.js
+++ b/globals.js
@@ -1,16 +1,26 @@
-console.log('globals.js loaded');
+if (typeof window.globalsLoaded === 'undefined') {
+ console.log('globals.js loaded');
-let lastChecked = null;
+ window.globalsLoaded = true;
-let Selectors = {
- // Plus 用户的选择器
- conversationsCheckbox: '.conversation-checkbox:checked',
- deleteButton: '[class*="text-red"]',
- confirmDeleteButton: 'button.btn.btn-danger',
- threeDotButton: '[id^="radix-"]',
- // 其他 Plus 用户选择器...
- CONVERSATION_SELECTOR: 'div > div > div > div > div > div > nav > div > div > div > div > ol > li > div > a',
- TITLE_SELECTOR: '.relative.grow.overflow-hidden.whitespace-nowrap',
-};
+ let lastChecked = null;
-let CHECKBOX_CLASS = 'conversation-checkbox';
\ No newline at end of file
+ let Selectors = {
+ // Plus 用户的选择器
+ conversationsCheckbox: '.conversation-checkbox:checked',
+ deleteButton: '[class*="text-red"]',
+ confirmDeleteButton: 'button.btn.btn-danger',
+ threeDotButton: '[id^="radix-"]',
+ // 其他 Plus 用户选择器...
+ CONVERSATION_SELECTOR: 'div > div > div > div > div > div > nav > div > div > div > div > ol > li > div > a',
+ TITLE_SELECTOR: '.relative.grow.overflow-hidden.whitespace-nowrap',
+ };
+
+ let CHECKBOX_CLASS = 'conversation-checkbox';
+
+ window.lastChecked = lastChecked;
+ window.Selectors = Selectors;
+ window.CHECKBOX_CLASS = CHECKBOX_CLASS;
+} else {
+ console.log('globals.js already loaded, skipping re-initialization');
+}
\ No newline at end of file
diff --git a/popup.js b/popup.js
index e6edd74..6d31fc6 100644
--- a/popup.js
+++ b/popup.js
@@ -1,43 +1,37 @@
-document.getElementById('add-checkboxes').addEventListener('click', () => {
- chrome.tabs.query({ active: true, currentWindow: true }, ([tab]) => {
+function loadGlobalsThenExecute(tabId, secondaryScript) {
+ chrome.scripting.executeScript({
+ target: { tabId: tabId },
+ files: ['globals.js']
+ }, () => {
chrome.scripting.executeScript({
- target: { tabId: tab.id },
- files: ['addCheckboxes.js']
+ target: { tabId: tabId },
+ files: [secondaryScript]
});
});
-});
+}
-document.getElementById('bulk-delete').addEventListener('click', () => {
- chrome.tabs.query({ active: true, currentWindow: true }, ([tab]) => {
- chrome.scripting.executeScript({
- target: { tabId: tab.id },
- files: ['bulkDeleteConversations.js']
+function addButtonListener(buttonId, scriptName) {
+ document.getElementById(buttonId).addEventListener('click', () => {
+ chrome.tabs.query({ active: true, currentWindow: true }, ([tab]) => {
+ if (tab) {
+ loadGlobalsThenExecute(tab.id, scriptName);
+ }
});
});
-});
+}
-document.getElementById('toggle-checkboxes').addEventListener('click', () => {
- chrome.tabs.query({ active: true, currentWindow: true }, ([tab]) => {
- chrome.scripting.executeScript({
- target: { tabId: tab.id },
- files: ['toggleCheckboxes.js']
- });
- });
-});
-
-document.getElementById('remove-checkboxes').addEventListener('click', () => {
- chrome.tabs.query({ active: true, currentWindow: true }, ([tab]) => {
- chrome.scripting.executeScript({
- target: { tabId: tab.id },
- files: ['removeCheckboxes.js']
- });
- });
-});
-
-
-// Update copyright year
-const currentYear = new Date().getFullYear();
-document.getElementById('copyright').innerHTML =
- '© ' + currentYear + ' qcrao@GitHub';
+function initializeButtons() {
+ addButtonListener('add-checkboxes', 'addCheckboxes.js');
+ addButtonListener('bulk-delete', 'bulkDeleteConversations.js');
+ addButtonListener('toggle-checkboxes', 'toggleCheckboxes.js');
+ addButtonListener('remove-checkboxes', 'removeCheckboxes.js');
+}
+function updateCopyrightYear() {
+ const currentYear = new Date().getFullYear();
+ document.getElementById('copyright').innerHTML =
+ `© ${currentYear} qcrao@GitHub`;
+}
+initializeButtons();
+updateCopyrightYear();