Can the chrome extension change the page encoding?

I am new to chrome extension development. I want to use the extension to change the page encoding, for example, chrome setting → tools → charset. And I saw a document with the chrome extension about chrome.contentSetting 1 . but I did not find how to change the page encoding.

+4
source share
1 answer

Yes. Via how to change the 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, 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 , , .

+3

All Articles