老熟女激烈的高潮_日韩一级黄色录像_亚洲1区2区3区视频_精品少妇一区二区三区在线播放_国产欧美日产久久_午夜福利精品导航凹凸

谷歌瀏覽器插件MV3報錯"Uncaught ReferenceError: window is not defined"

出錯

配置mv3后,在后臺代碼background.js使用DOMPurify發現無法訪問window,會一直報錯
Uncaught ReferenceError: window is not defined
查看后臺,globalThis變成了一個叫ServiceWorkerGlobalScope的玩意

創新互聯長期為近1000家客戶提供的網站建設服務,團隊從業經驗10年,關注不同地域、不同群體,并針對不同對象提供差異化的產品和服務;打造開放共贏平臺,與合作伙伴共同營造健康的互聯網生態環境。為云夢企業提供專業的成都網站制作、網站設計、外貿網站建設云夢網站改版等技術服務。擁有10余年豐富建站經驗和眾多成功案例,為您定制開發。

原因

mv3使用了一個叫Service workers的東西替代原來的background頁面,不提供dom API,所以不管是window還是document、HTMLElement……都會xx is not defined
chrome官方介紹:

Manifest V3 replaces background pages with service workers.
Like their web page counterparts, extension service workers listen for and respond to events in order to enhance the end user's experience. For web service workers this typically means managing cache, preloading resources, and enabling offline web pages. While extension service workers can still do all of this, the extension package already contains a bundle of resources that can be accessed offline. As such, extension service workers tend to focus on reacting to relevant browser events exposed by Chrome's extensions APIs.

另附mv2和mv3后臺頁區別對比表:

MV2 - Background page MV3 - Service worker
Can use a persistent page. Terminates when not in use.
Has access to the DOM. Doesn't have access to the DOM.
Can use XMLHttpRequest(). Must use fetch() to make requests.

解決

1. 放棄在后臺頁直接調用dom API

chrome官方態度還是比較明確的,所以最好不要花太大力氣去搞。能用chrome API的全都用chrome API實現,特別是標簽和窗口的操作。另外chrome也提供了一些mv2到mv3遷移的建議migrating_to_service_workers

2. 使用undom模擬

undom是比jsdom輕量的Document接口實現,基本滿足dom操作的需求,簡單易用。
安裝

pnpm install --save undom

使用

import undom from 'undom';
let document = undom();

// 簡單操作dom
let foo = document.createElement('foo');
foo.appendChild(document.createTextNode('Hello, World!'));
document.body.appendChild(foo);

// 驅動第三方庫DOMPurify
const purify = DOMPurify(document);
purify.sanitize(html..)

另外undom本身不支持直接輸出HTML,因為它只實現了Document的骨架,不能直接用innerHTML、querySelector等,提供了手動解析的方法

function serialize(el) {
	if (el.nodeType===3) return el.textContent;
	var name = String(el.nodeName).toLowerCase(),
		str = '<'+name,
		c, i;
	for (i=0; i';
}

function enc(s) {
	return s.replace(/[&'"<>]/g, function(a){ return `&#${a};` });
}

// 輸出完整html
console.log(serialize(document.childNodes[0]));
// 轉義html
console.log(enc(serialize(document.childNodes[0])));

文章名稱:谷歌瀏覽器插件MV3報錯&quot;Uncaught ReferenceError: window is not defined&quot;
網頁鏈接:http://www.xueling.net.cn/article/dsojicd.html

其他資訊

在線咨詢
服務熱線
服務熱線:028-86922220
TOP
主站蜘蛛池模板: 福利视频一二三在线视频免费观看 | 亚洲国产成人爱av在线播放 | 色综合久久久久综合一小说 | 69vd视频 | 日韩一区精品视频 | 少妇对白露脸打电话系列 | 国产在线麻豆精品观看 | 人妻精品动漫H无码 | 亚洲最新视频 | 国产成人在线网站 | 黄色免费看看 | 黄色入口网站 | 99热一区| 青青草成人影视 | 欧美日韩一区在线播放 | JIZZJIZZ国产 | 狠狠亚洲婷婷综合色香五月排名 | 欧美一区2区视频在线观看 久久国产亚洲精品 | 成人开心网 | 日韩一区二区三区视频在线播放 | 九州影视在线免费 | 北条麻妃一区二区免费播放 | japan白嫩丰满人妻videoshd | 亚洲一区二区三区四区在线观看 | 嘿咻嘿咻在线观看 | 韩国18禁男男黄网站 | 嫩草入口 | av在线天 | 国产hsck在线亚洲 | 偷偷操不一样久久 | 久久躁躁天天添久久久 | 免费精品国产福利片 | 特黄特色大片免费播放器图片 | 三级爱爱视频 | 东北老女人高潮大叫对白 | av网站大全在线 | 国产综合视频在线 | 色综合久久久久无码专区 | 红杏成av人影院在线观看 | 免费高清一区二区三区 | 浪潮av色综合久久天堂 |