-
Notifications
You must be signed in to change notification settings - Fork 0
/
background.html
58 lines (47 loc) · 1.71 KB
/
background.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
<!doctype html>
<script>
// Simple extension to change content-type header
// define all possible content-types the user can toggle
var availableTypes = new Array("text/html; charset=utf-8","text/html; charset=ISO-8859-1");
var availableIcons = new Array("gfx/utf.png","gfx/iso.png");
var availableTitles = new Array("UTF8","ISO-W");
// default setup - be aware, this should be the same as availableTypes[0]
chrome.browserAction.setIcon({path: availableIcons[0]});
chrome.browserAction.setTitle({title: availableTitles[0]});
// toggle var for current type
var currentType = 0;
// attach listener to browserAction
chrome.browserAction.onClicked.addListener(toggleType);
// implement type toggle when user pushes browseraction
function toggleType() {
currentType = (currentType + 1) % availableTypes.length;
chrome.browserAction.setIcon({path: availableIcons[currentType]});
chrome.browserAction.setTitle({title: availableTitles[currentType]});
//console.log("new type: "+currentType);
}
// attach event handler to intercept headers from server
chrome.webRequest.onHeadersReceived.addListener(
function(info) {
var response = new Array();
for (var header in info.responseHeaders) {
if(info.responseHeaders[header].name == "Content-Type") {
// TODO: explode on charset= to leave type alone
response.push({"name": "Content-Type", "value": availableTypes[currentType]});
}else {
response.push(info.responseHeaders[header]);
}
}
//for (var header in response) {
// console.log("name: "+response[header].name+" - value: "+response[header].value);
//}
return {responseHeaders: response};
},
// filters
{
urls: [
"<all_urls>"
]
},
["blocking", "responseHeaders"]
);
</script>