Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 635f3f0898 | |||
| a53ee6d590 |
@@ -1,5 +1,17 @@
|
||||
# Changelog
|
||||
|
||||
## v0.19.26
|
||||
|
||||
[compare changes](https://github.com/wxt-dev/wxt/compare/wxt-v0.19.25...wxt-v0.19.26)
|
||||
|
||||
### 🩹 Fixes
|
||||
|
||||
- **context:** Deduplicate `wxt:content-script-started` ([#1364](https://github.com/wxt-dev/wxt/pull/1364))
|
||||
|
||||
### ❤️ Contributors
|
||||
|
||||
- Deniz Uğur ([@DenizUgur](http://github.com/DenizUgur))
|
||||
|
||||
## v0.19.25
|
||||
|
||||
[compare changes](https://github.com/wxt-dev/wxt/compare/wxt-v0.19.24...wxt-v0.19.25)
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "wxt",
|
||||
"type": "module",
|
||||
"version": "0.19.25",
|
||||
"version": "0.19.26",
|
||||
"description": "Next gen framework for developing web extensions",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
|
||||
@@ -42,6 +42,7 @@ export class ContentScriptContext implements AbortController {
|
||||
private isTopFrame = window.self === window.top;
|
||||
private abortController: AbortController;
|
||||
private locationWatcher = createLocationWatcher(this);
|
||||
private receivedMessageIds = new Set<string>();
|
||||
|
||||
constructor(
|
||||
private readonly contentScriptName: string,
|
||||
@@ -233,19 +234,28 @@ export class ContentScriptContext implements AbortController {
|
||||
{
|
||||
type: ContentScriptContext.SCRIPT_STARTED_MESSAGE_TYPE,
|
||||
contentScriptName: this.contentScriptName,
|
||||
messageId: Math.random().toString(36).slice(2),
|
||||
},
|
||||
'*',
|
||||
);
|
||||
}
|
||||
|
||||
verifyScriptStartedEvent(event: MessageEvent) {
|
||||
const isScriptStartedEvent =
|
||||
event.data?.type === ContentScriptContext.SCRIPT_STARTED_MESSAGE_TYPE;
|
||||
const isSameContentScript =
|
||||
event.data?.contentScriptName === this.contentScriptName;
|
||||
const isNotDuplicate = !this.receivedMessageIds.has(event.data?.messageId);
|
||||
return isScriptStartedEvent && isSameContentScript && isNotDuplicate;
|
||||
}
|
||||
|
||||
listenForNewerScripts(options?: { ignoreFirstEvent?: boolean }) {
|
||||
let isFirst = true;
|
||||
|
||||
const cb = (event: MessageEvent) => {
|
||||
if (
|
||||
event.data?.type === ContentScriptContext.SCRIPT_STARTED_MESSAGE_TYPE &&
|
||||
event.data?.contentScriptName === this.contentScriptName
|
||||
) {
|
||||
if (this.verifyScriptStartedEvent(event)) {
|
||||
this.receivedMessageIds.add(event.data.messageId);
|
||||
|
||||
const wasFirst = isFirst;
|
||||
isFirst = false;
|
||||
if (wasFirst && options?.ignoreFirstEvent) return;
|
||||
|
||||
Reference in New Issue
Block a user