2013-12-31 1 views
4

크롬 확장 기능을 처음 사용했습니다. 확장 기능을 사용하여 크롬 설정 >> 도구 >> 문자 세트와 같은 페이지 문자 세트를 변경하고 싶습니다. 그리고 chrome.contentSetting에 대한 크롬 확장을 포함한 문서를 보았습니다. 1. 하지만 페이지 문자 세트를 변경하는 방법을 찾지 못했습니다.크롬 확장 프로그램이 페이지 문자 세트를 변경할 수 있습니까?

+0

내선 번호가 공개 되었습니까? – e9t

답변

3

예. how to change response header in Chrome 통해 : 당신이 pageload의 캐릭터 세트를 업데이트하려면

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']); 

, 당신은 문서 <head>에 메타 태그를 업데이트하는 chrome.webRequest.onCompleted.addListener가 필요합니다. 문서가 지정된 charset으로 렌더링되기 때문에 이것은 실질적으로 chrome.tabs.executeScript()을 통해 호출 할 수 없습니다. 페이지가 초기화 및 렌더링

{ 
    "manifest_version": 2, 
    // name,description,version... 
    "background": { 
     "scripts": ["background.js"], 
     "persistent": true, 
     //"matches": ["https://google.com/"] 
    }, 
    "permissions": [ 
     "tabs", 
     "webRequest", 
     "webRequestBlocking" 
    ] 
} 

되면, 캐릭터 세트를 변경할 수있는 방법이 없다 : 어느 쪽이 함수의

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/']}); 

manifest.json에로드하여 background.js 파일로 이동합니다. document.charset은 읽기 전용이며 다시 렌더링을 트리거해도 변경된 경우에도 문서 charset에 영향을 미치지 않습니다.

+1

이것은 페이지가로드되기 전에 _ 변경하기위한 솔루션입니다. 이미로드 된 페이지에 대한 질문이 아직 열려 있습니다. – Xan

+0

전화하세요. 답변이 업데이트되었습니다. – Seabass

+0

포스트로드 변경에 대한 가장 좋은 근사값은 "활성화 된 WebRequest 리스너, 재로드, 리스너 비활성화"입니다. – Xan

관련 문제