Files
rrweb/rrweb-simple-ext/content.js
zhaoyilun 27a17d7068
Some checks failed
Tests / Tests (push) Has been cancelled
ESLint Check / ESLint Check and Report Upload (push) Has been cancelled
Prettier Check / Format Check (push) Has been cancelled
Prettier Check / Format Code (push) Has been cancelled
ESLint Check / Build Base for Bundle Size Comparison (push) Has been cancelled
Add SuperRPA integration guide, simple extension and standalone replay page
- docs/integration/superrpa-integration.zh_CN.md: complete integration guide
- rrweb-simple-ext/: minimal Chrome extension for page recording
- replay.html: standalone drag-and-drop replay viewer
- CLAUDE.md: project instructions

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-10 17:08:24 +08:00

47 lines
1.6 KiB
JavaScript

// content.js - content script (runs in content script world)
(function() {
// Inject the record library + inject script into page
function loadScripts(callback) {
// Load record.umd.cjs first
const script1 = document.createElement('script');
script1.src = chrome.runtime.getURL('record.umd.cjs');
script1.onload = function() {
script1.remove();
// Then load inject.js
const script2 = document.createElement('script');
script2.src = chrome.runtime.getURL('inject.js');
script2.onload = function() {
script2.remove();
};
(document.head || document.documentElement).appendChild(script2);
};
(document.head || document.documentElement).appendChild(script1);
}
// Listen for messages from inject.js (page context)
window.addEventListener('message', function(event) {
if (event.source !== window) return;
const data = event.data;
if (!data || !data.__rrweb_action) return;
if (data.__rrweb_action === 'event') {
// Forward event to background
chrome.runtime.sendMessage({ action: 'event', data: data.__rrweb_data });
}
});
// Listen for messages from background
chrome.runtime.onMessage.addListener(function(msg, sender, sendResponse) {
if (msg.action === 'startRecord') {
loadScripts();
sendResponse({ ok: true });
} else if (msg.action === 'stopRecord') {
window.postMessage({ __rrweb_action: 'stop' }, '*');
sendResponse({ ok: true });
}
// Don't return true for unrelated messages
});
console.log('[rrweb] Content script loaded');
})();