more accurate base64 data processing; moved safari check to variables
This commit is contained in:
+4
-4
@@ -30,6 +30,7 @@ var saveAs = saveAs || (function(view) {
|
|||||||
var event = new MouseEvent("click");
|
var event = new MouseEvent("click");
|
||||||
node.dispatchEvent(event);
|
node.dispatchEvent(event);
|
||||||
}
|
}
|
||||||
|
, is_safari = /Version\/[\d\.]+.*Safari/.test(navigator.userAgent)
|
||||||
, webkit_req_fs = view.webkitRequestFileSystem
|
, webkit_req_fs = view.webkitRequestFileSystem
|
||||||
, req_fs = view.requestFileSystem || webkit_req_fs || view.mozRequestFileSystem
|
, req_fs = view.requestFileSystem || webkit_req_fs || view.mozRequestFileSystem
|
||||||
, throw_outside = function(ex) {
|
, throw_outside = function(ex) {
|
||||||
@@ -94,13 +95,12 @@ var saveAs = saveAs || (function(view) {
|
|||||||
}
|
}
|
||||||
// on any filesys errors revert to saving with object URLs
|
// on any filesys errors revert to saving with object URLs
|
||||||
, fs_error = function() {
|
, fs_error = function() {
|
||||||
if (target_view && /Version\/[\d\.]+.*Safari/.test(navigator.userAgent) && typeof FileReader !== "undefined") {
|
if (target_view && is_safari && typeof FileReader !== "undefined") {
|
||||||
// Safari doesn't allow downloading of blob urls
|
// Safari doesn't allow downloading of blob urls
|
||||||
var reader = new FileReader();
|
var reader = new FileReader();
|
||||||
reader.onloadend = function() {
|
reader.onloadend = function() {
|
||||||
var base64Data = reader.result;
|
var base64Data = reader.result;
|
||||||
base64Data = base64Data.replace(/^data:.*?;/, 'data:attachment/file;');
|
target_view.location.href = "data:attachment/file" + base64Data.slice(base64Data.search(/[,;]/));
|
||||||
target_view.location.href = base64Data;
|
|
||||||
filesaver.readyState = filesaver.DONE;
|
filesaver.readyState = filesaver.DONE;
|
||||||
dispatch_all();
|
dispatch_all();
|
||||||
};
|
};
|
||||||
@@ -116,7 +116,7 @@ var saveAs = saveAs || (function(view) {
|
|||||||
target_view.location.href = object_url;
|
target_view.location.href = object_url;
|
||||||
} else {
|
} else {
|
||||||
var new_tab = view.open(object_url, "_blank");
|
var new_tab = view.open(object_url, "_blank");
|
||||||
if (new_tab == undefined && typeof safari !== "undefined") {
|
if (new_tab == undefined && is_safari) {
|
||||||
//Apple do not allow window.open, see http://bit.ly/1kZffRI
|
//Apple do not allow window.open, see http://bit.ly/1kZffRI
|
||||||
view.location.href = object_url
|
view.location.href = object_url
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user