Fixed IE8 BOSS report compatibility.

Local storage polyfills won't work with the file:// URL. :( I could
probably implement a system based on a URL hash fragment that passes
defaults from the wxWidgets UI, but that is one-way only and probably
isn't worth the effort.
This commit is contained in:
WrinklyNinja
2013-06-10 22:58:20 +01:00
parent 9928ff1d2f
commit ca3eae77df
4 changed files with 8 additions and 1865 deletions
File diff suppressed because it is too large Load Diff
+8 -11
View File
@@ -9,7 +9,7 @@ function isStorageSupported() {
function saveCheckboxState(evt) {
if (evt.currentTarget.checked) {
try {
localStorage.setItem(evt.currentTarget.id, evt.currentTarget.checked);
localStorage.setItem(evt.currentTarget.id, true);
} catch (e) {
if (e == QUOTA_EXCEEDED_ERR) {
alert('Web storage quota for this document has been exceeded. Please empty your browser\'s cache. Note that this will delete all locally stored data.');
@@ -24,8 +24,7 @@ function loadSettings() {
while (i > -1) {
var elem = document.getElementById(localStorage.key(i));
if (elem != null && 'defaultChecked' in elem) {
elem.checked = true;
elem.dispatchEvent(new MouseEvent('click'));
elem.dispatchEvent(new MouseEvent('click'));
}
i--;
}
@@ -102,7 +101,7 @@ function showSection(evt) {
function toggleMessages(evt) {
var listItems = document.getElementById('plugins').getElementsByTagName('li');
var i = listItems.length - 1;
var hiddenNo = parseInt(document.getElementById('hiddenMessageNo').textContent);
var hiddenNo = parseInt(document.getElementById('hiddenMessageNo').innerHTML);
while (i > -1) {
var spans = listItems[i].getElementsByTagName('span');
if (spans.length == 0 || spans[0].className.indexOf('mod') == -1) {
@@ -113,7 +112,7 @@ function toggleMessages(evt) {
filterMatch = true;
} else if (evt.target.id == 'hideBashTags' && listItems[i].className.indexOf('tag') != -1) {
filterMatch = true;
} else if (evt.target.id == 'hideDoNotCleanMessages' && listItems[i].textContent.indexOf('Do not clean.') != -1) {
} else if (evt.target.id == 'hideDoNotCleanMessages' && listItems[i].innerHTML.indexOf('Do not clean.') != -1) {
filterMatch = true;
}
if (filterMatch) {
@@ -132,15 +131,13 @@ function toggleMessages(evt) {
}
i--;
}
document.getElementById('hiddenMessageNo').textContent = hiddenNo;
var event = document.createEvent('Event');
event.initEvent('click', true, true);
document.getElementById('hideMessagelessPlugins').dispatchEvent(event);
document.getElementById('hiddenMessageNo').innerHTML = hiddenNo;
togglePlugins(evt);
}
function togglePlugins(evt) {
var plugins = document.getElementById('plugins').getElementsByTagName('ul')[0].childNodes;
var i = plugins.length - 1;
var hiddenNo = parseInt(document.getElementById('hiddenPluginNo').textContent);
var hiddenNo = parseInt(document.getElementById('hiddenPluginNo').innerHTML);
while (i > -1) {
if (plugins[i].nodeType == Node.ELEMENT_NODE) {
var isMessageless = true;
@@ -165,7 +162,7 @@ function togglePlugins(evt) {
}
i--;
}
document.getElementById('hiddenPluginNo').textContent = hiddenNo;
document.getElementById('hiddenPluginNo').innerHTML = hiddenNo;
}
function setupEventHandlers() {
var i, elemArr;
-121
View File
@@ -1,121 +0,0 @@
// Storage polyfill by Remy Sharp
// https://gist.github.com/350433
// Needed for IE7-
// Dependencies:
// JSON (use json2.js if necessary)
// Tweaks by Joshua Bell (inexorabletash@gmail.com)
// * URI-encode item keys
// * Use String() for stringifying
// * added length
if (!window.localStorage || !window.sessionStorage) (function() {
var Storage = function(type) {
function createCookie(name, value, days) {
var date, expires;
if (days) {
date = new Date();
date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
expires = "; expires=" + date.toGMTString();
} else {
expires = "";
}
document.cookie = name + "=" + value + expires + "; path=/";
}
function readCookie(name) {
var nameEQ = name + "=",
ca = document.cookie.split(';'),
i, c;
for (i = 0; i < ca.length; i++) {
c = ca[i];
while (c.charAt(0) == ' ') {
c = c.substring(1, c.length);
}
if (c.indexOf(nameEQ) == 0) {
return c.substring(nameEQ.length, c.length);
}
}
return null;
}
function setData(data) {
data = JSON.stringify(data);
if (type == 'session') {
window.name = data;
} else {
createCookie('localStorage', data, 365);
}
}
function clearData() {
if (type == 'session') {
window.name = '';
} else {
createCookie('localStorage', '', 365);
}
}
function getData() {
var data = type == 'session' ? window.name : readCookie('localStorage');
return data ? JSON.parse(data) : {};
}
// initialise if there's already data
var data = getData();
function numKeys() {
var n = 0;
for (var k in data) {
if (data.hasOwnProperty(k)) {
n += 1;
}
}
return n;
}
return {
clear: function() {
data = {};
clearData();
this.length = numKeys();
},
getItem: function(key) {
key = encodeURIComponent(key);
return data[key] === undefined ? null : data[key];
},
key: function(i) {
// not perfect, but works
var ctr = 0;
for (var k in data) {
if (ctr == i) return decodeURIComponent(k);
else ctr++;
}
return null;
},
removeItem: function(key) {
key = encodeURIComponent(key);
delete data[key];
setData(data);
this.length = numKeys();
},
setItem: function(key, value) {
key = encodeURIComponent(key);
data[key] = String(value);
setData(data);
this.length = numKeys();
},
length: 0
};
};
if (!window.localStorage) window.localStorage = new Storage('local');
if (!window.sessionStorage) window.sessionStorage = new Storage('session');
})();
-8
View File
@@ -132,14 +132,6 @@ namespace boss {
node.set_name("script");
node.append_attribute("src").set_value("../resources/polyfill.js");
node.text().set(" ");
node = head.append_child();
node.set_name("script");
node.append_attribute("src").set_value("../resources/storage.js");
node.text().set(" ");
node = head.append_child(pugi::node_comment);
node.set_value("[if IE 8]><script src='../resources/DOM-shim-ie8.js'></script><![endif]");
}
inline void AppendNav(pugi::xml_node& body) {