@iconfu/svg-inject
Version:
simple bulletproof svg injector
48 lines (42 loc) • 1.94 kB
JavaScript
/*
* This script is used to provide feedback if the demo is not working correctly on the local file system due to the same origin policy.
*/
(function() {
var msg = null;
var msgTemplate = '<div style="border: 1px solid #ff6666; background: #ffcccc; padding: 30px;">' +
'<h1>SVGInject not working correctly</h1>' +
'<h2>Don\'t worry: It\'s most likely because you are running this on your local file system.</h2>' +
'<p>SVGInject works very well in any browser when run with a web server.</p>' +
'<p>Due to the same origin policy for some browsers (Chrome, Safari), SVGs can not be loaded when run on the file system.</p>' +
'<h2>How to get this to work:</h2>' +
'<ul style="font-size: larger;">' +
'<li>Run this with a Web Server</li>' +
'<li>Use a Firefox browser</li>' +
'</ul>' +
'<p>There are also other possible solutions (--allow-file-access-from-files flag in Chrome) you might want to look for to run this example on the file system.</p>' +
'</div>';
function createElementFromHTML(htmlString) {
var div = document.createElement('div');
div.innerHTML = htmlString;
return div.firstChild;
}
function showMessage() {
msg = createElementFromHTML(msgTemplate);
document.body.insertBefore(msg, document.body.firstChild);
}
var req = new XMLHttpRequest();
req.onreadystatechange = function() {
if (req.readyState == 4) {
// readyState is DONE
var status = req.status;
if (status == 200) {
// request status is OK
} else {
showMessage()
}
}
};
var script = document.querySelectorAll("script[src$='xhr-check.js']")[0];
req.open('GET', script.getAttribute('src'), true);
req.send();
})();