gpt4 book ai didi

google-chrome - chrome 扩展程序可以更改页面字符集吗?

转载 作者:行者123 更新时间:2023-12-01 02:20:29 25 4
gpt4 key购买 nike

我是 chrome 扩展开发的新手。我想使用扩展来更改页面字符集,例如 chrome setting>>tools>>charset。我看到了关于 chrome.contentSetting 1 的带有 chrome 扩展名的文档.但我还没有找到如何更改页面字符集。

最佳答案

是的。通过 how to change response header in Chrome :

chrome.webRequest.onHeadersReceived.addListener(function(details){
for(var i = 0; i < details.responseHeaders.length; ++i)
if(details.responseHeaders[i].name.toLowerCase() == 'content-type')
details.responseHeaders[i].value = 'text/html; charset=shift-jis';
return {responseHeaders:details.responseHeaders};
}, {urls: ['https://www.google.com/*']}, ['blocking', 'responseHeaders']);

如果你想在页面加载时更新字符集,你需要一个 chrome.webRequest.onCompleted.addListener更新文档中的元标记 <head> .这不能通过 chrome.tabs.executeScript() 实际调用因为文档是用指定的字符集呈现的。
chrome.webRequest.onCompleted.addListener(function(details){
chrome.tabs.getSelected(null, function(tab) {
chrome.tabs.executeScript(null, {allFrames:true,code:"document.getElementsByTagName('meta')[0].setAttribute('content', 'text/html; charset=UTF-8');"});
});
}, {urls: ['http://google.com/']});

这些函数中的任何一个都包含在您的 background.js 中在 manifest.json 中加载的文件:
{
"manifest_version": 2,
// name,description,version...
"background": {
"scripts": ["background.js"],
"persistent": true,
//"matches": ["https://google.com/"]
},
"permissions": [
"tabs",
"webRequest",
"webRequestBlocking"
]
}

一旦页面被初始化并呈现,就无法更改字符集。 document.charset是只读的,并且触发重新渲染似乎不会影响文档字符集,即使被更改。

关于google-chrome - chrome 扩展程序可以更改页面字符集吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20850527/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com