gor*_*pro 5 google-chrome google-chrome-extension
我是 Chrome 扩展开发的新手。我想使用扩展来更改页面字符集,例如 chrome 设置>>工具>>字符集。我看过有关 chrome.contentSetting 1的带有 chrome 扩展名的文档。但我还没有找到如何更改页面字符集。
小智 4
是的。通过如何更改 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']);
Run Code Online (Sandbox Code Playgroud)
如果您想在页面加载时更新字符集,则需要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/']});
Run Code Online (Sandbox Code Playgroud)
这些函数中的任何一个都会进入您background.js加载的文件中manifest.json:
{
"manifest_version": 2,
// name,description,version...
"background": {
"scripts": ["background.js"],
"persistent": true,
//"matches": ["https://google.com/"]
},
"permissions": [
"tabs",
"webRequest",
"webRequestBlocking"
]
}
Run Code Online (Sandbox Code Playgroud)
一旦页面被初始化并呈现,就无法更改字符集。document.charset是只读的,即使发生更改,触发重新渲染似乎也不会影响文档字符集。
| 归档时间: |
|
| 查看次数: |
1250 次 |
| 最近记录: |