我是chrome扩展开发的新手。我想使用扩展名来更改页面字符集,例如chrome setting>> tools>> charset。我看过chrome扩展名为chrome.contentSetting 1的文档。但我还没有找到如何更改页面字符集。
答案 0 :(得分:3)
是。通过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']);
如果您要更新pageload上的charset,则需要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"
]
}
初始化并呈现页面后,无法更改charset。 document.charset
是只读的,触发重新渲染似乎不会影响文档字符集,即使已更改。