mirror of
https://github.com/guoriyue/AutoMouser.git
synced 2026-06-03 21:02:31 +08:00
102 lines
4.3 KiB
JavaScript
102 lines
4.3 KiB
JavaScript
// InverseUI Content Script - Modular event tracking system
|
|
console.log('🚀 InverseUI content script LOADED');
|
|
|
|
(function() {
|
|
'use strict';
|
|
|
|
console.log('🔥 InverseUI content script starting...');
|
|
|
|
// Check if we're in an extension context before using Chrome APIs
|
|
if (typeof chrome === 'undefined' || !chrome.runtime) {
|
|
console.warn('❌ Chrome extension API not available in this context');
|
|
return;
|
|
}
|
|
|
|
console.log('✅ Chrome APIs available, continuing initialization...');
|
|
|
|
// Import modules
|
|
async function initializeContentScript() {
|
|
try {
|
|
console.log('Step 1: Importing xpath_utils...');
|
|
const { getXpaths } = await import(chrome.runtime.getURL('util/xpath_utils.js'));
|
|
console.log('Step 1: SUCCESS');
|
|
|
|
console.log('Step 2: Importing communication_utils...');
|
|
const { initPageCommunication, initBackgroundCommunication, notifyContentScriptReady } = await import(chrome.runtime.getURL('util/communication_utils.js'));
|
|
console.log('Step 2: SUCCESS');
|
|
|
|
console.log('Step 3: Importing api_injection...');
|
|
const { initAPIInjection } = await import(chrome.runtime.getURL('inject/api_injection.js'));
|
|
console.log('Step 3: SUCCESS');
|
|
|
|
console.log('Step 4: Importing action tracking...');
|
|
const { initializeActionTracking } = await import(chrome.runtime.getURL('modules/action/index.js'));
|
|
console.log('Step 4: SUCCESS');
|
|
|
|
console.log('Step 5: Getting safeSendMessage...');
|
|
const { safeSendMessage } = await import(chrome.runtime.getURL('util/communication_utils.js'));
|
|
console.log('Step 5: SUCCESS');
|
|
|
|
|
|
// Initialize API injection for Selenium communication
|
|
initAPIInjection();
|
|
|
|
// Initialize communication channels
|
|
initPageCommunication();
|
|
initBackgroundCommunication((recording) => {
|
|
// Just log recording state changes
|
|
// Enhanced handlers in click.js/input.js already check recState internally
|
|
// No need for extra listeners from startRecording()
|
|
console.log('Recording state changed:', recording);
|
|
});
|
|
|
|
// Initialize comprehensive action tracking system
|
|
await initializeActionTracking(safeSendMessage, getXpaths);
|
|
|
|
|
|
// Send ready message to background
|
|
notifyContentScriptReady();
|
|
|
|
console.log('InverseUI: Content script fully initialized');
|
|
|
|
} catch (error) {
|
|
console.error('Failed to initialize content script modules:', error);
|
|
console.error('Error message:', error.message);
|
|
console.error('Error stack:', error.stack);
|
|
console.error('Error name:', error.name);
|
|
console.error('Full error object:', error);
|
|
// Fallback to inline implementation
|
|
await initializeFallbackTracking();
|
|
}
|
|
}
|
|
|
|
|
|
// Fallback to inline implementation if modules fail
|
|
async function initializeFallbackTracking() {
|
|
try {
|
|
console.log('InverseUI: Falling back to inline tracking implementation');
|
|
|
|
// Import required modules for fallback
|
|
const { getXpaths } = await import(chrome.runtime.getURL('util/xpath_utils.js'));
|
|
const { initializeRecording } = await import(chrome.runtime.getURL('modules/recording.js'));
|
|
|
|
// Initialize inline tracking
|
|
initializeRecording(getXpaths);
|
|
|
|
console.log('InverseUI: Fallback inline tracking initialized');
|
|
} catch (error) {
|
|
console.error('Failed to initialize fallback tracking:', error);
|
|
console.error('Fallback error message:', error.message);
|
|
console.error('Fallback error stack:', error.stack);
|
|
console.error('InverseUI: Content script initialization failed completely');
|
|
}
|
|
}
|
|
|
|
// Initialize on DOM ready
|
|
if (document.readyState === 'loading') {
|
|
document.addEventListener('DOMContentLoaded', initializeContentScript);
|
|
} else {
|
|
initializeContentScript();
|
|
}
|
|
|
|
})(); |