Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save janekptacijarabaci/e2b932e73216fbe00fb2 to your computer and use it in GitHub Desktop.
Save janekptacijarabaci/e2b932e73216fbe00fb2 to your computer and use it in GitHub Desktop.
Greasemonkey issue #2376: GM_getResourceText - binary (backward compatible)
// ==UserScript==
// @name Greasemonkey - issue - 2376
// @include https://en.wikipedia.org/wiki/Portal:Biography
// @resource image https://assets-cdn.github.com/images/modules/home/desktop-windows.png?v=1
// @grant GM_getResourceText
// ==/UserScript==
if (document.getElementsByTagName("body")[0]) {
var body = document.getElementsByTagName("body")[0];
var resourceName = "image";
var textareaElementName = "textarea";
var textareaRows = "20";
// arraybuffer
var contentTypeArraybuffer = "arraybuffer";
var textareaArraybuffer = document.createElement(textareaElementName);
textareaArraybuffer.rows = textareaRows;
textareaArraybuffer.title = contentTypeArraybuffer;
var arraybuffer = GM_getResourceText(resourceName, contentTypeArraybuffer);
var dataArraybuffer = "";
try {
var dataViewArraybuffer = new Uint8Array(arraybuffer);
for (var i = 0, count = dataViewArraybuffer.byteLength; i < count; i++) {
dataArraybuffer += String.fromCharCode(dataViewArraybuffer[i]);
}
textareaArraybuffer.value = btoa(dataArraybuffer);
body.appendChild(textareaArraybuffer);
} catch (e) {
console.log(GM_info.script.localizedName + " (" + contentTypeArraybuffer + "): " + e);
}
// blob
var contentTypeBlob = "blob";
var typeBlob = "image/png";
var textareaBlob = document.createElement(textareaElementName);
textareaBlob.rows = textareaRows;
textareaBlob.title = contentTypeBlob;
var blob = GM_getResourceText(resourceName, contentTypeBlob);
var reader = new FileReader();
reader.readAsDataURL(new Blob([blob], {"type": typeBlob}));
reader.onloadend = function () {
textareaBlob.value = reader.result;
body.appendChild(textareaBlob);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment