/ / Як читати двійкові дані в IE9? - javascript, ajax, Internet-explorer-9

Як читати двійкові дані в IE9? - javascript, ajax, internet-explorer-9

Я працюю над кодом Javascript, який створюєальфа-маска зображення за допомогою шляхів, вбудованих Photoshop. Обробник завантаження тегу IMG буде викликати кліп (this). Функція завантажує вихідний файл зображення та сканує його. Ось установка:

function clip(img) {
var xhr = new XMLHttpRequest();
xhr.open("GET", img.src, true);
xhr.responseType = "arraybuffer";
xhr.target = img;

xhr.onload = function(e) {
var bytes = new Uint8Array(this.response);
var p = findPhotoshopSegment(bytes);
if(p) {
var paths = parse8BIMData(bytes, p);

/* ... replaces IMG with SVG tag ... */
}
};
xhr.send();
}

Ви можете побачити код у дії на http://flaczki.net46.net/JPEG/SVG.html

Наразі він працює лише у Firefox, Chrome та Safari. Це не працює в IE9. Браузер підтримує SVG, але не Uint8Array. Чи є якесь обхідне рішення?

Відповіді:

27 за відповідь № 1

У мене була така ж проблема під час гри з бібліотекою pdf.js, і я знайшов рішення зробити власний Uint8Array, нижче - код, який вам потрібен. Усі кредити надходять notmasteryet@github та повний код можна знайти тут https://gist.github.com/1057924

(function() {
try {
var a = new Uint8Array(1);
return; //no need
} catch(e) { }

function subarray(start, end) {
return this.slice(start, end);
}

function set_(array, offset) {
if (arguments.length < 2) offset = 0;
for (var i = 0, n = array.length; i < n; ++i, ++offset)
this[offset] = array[i] & 0xFF;
}

// we need typed arrays
function TypedArray(arg1) {
var result;
if (typeof arg1 === "number") {
result = new Array(arg1);
for (var i = 0; i < arg1; ++i)
result[i] = 0;
} else
result = arg1.slice(0);
result.subarray = subarray;
result.buffer = result;
result.byteLength = result.length;
result.set = set_;
if (typeof arg1 === "object" && arg1.buffer)
result.buffer = arg1.buffer;

return result;
}

window.Uint8Array = TypedArray;
window.Uint32Array = TypedArray;
window.Int32Array = TypedArray;
})();

6 для відповіді № 2

Якщо ви хочете бути впевненими, що ви отримуєте ширший діапазон сумісності, ви також можете скористатися файлом compatibility.js, включеним до дистрибутиву PDF.js у каталозі "web". Отримайте PDF.js з Mozilla Github, розпакуйте zip-архів та включіть файл compatibility.js із наведеного вище каталогу. Це також змушує бібліотеку PDF.js працювати, наприклад IE9