76 lines
2 KiB
HTML
76 lines
2 KiB
HTML
|
<!DOCTYPE HTML>
|
||
|
<!--
|
||
|
/*
|
||
|
* jQuery File Upload Plugin postMessage API
|
||
|
* https://github.com/blueimp/jQuery-File-Upload
|
||
|
*
|
||
|
* Copyright 2011, Sebastian Tschan
|
||
|
* https://blueimp.net
|
||
|
*
|
||
|
* Licensed under the MIT license:
|
||
|
* https://opensource.org/licenses/MIT
|
||
|
*/
|
||
|
-->
|
||
|
<html lang="en">
|
||
|
<head>
|
||
|
<meta charset="utf-8">
|
||
|
<title>jQuery File Upload Plugin postMessage API</title>
|
||
|
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js"></script>
|
||
|
</head>
|
||
|
<body>
|
||
|
<script>
|
||
|
/*jslint unparam: true, regexp: true */
|
||
|
/*global $, Blob, FormData, location */
|
||
|
'use strict';
|
||
|
var origin = /^http:\/\/example.org/,
|
||
|
target = new RegExp('^(http(s)?:)?\\/\\/' + location.host + '\\/');
|
||
|
$(window).on('message', function (e) {
|
||
|
e = e.originalEvent;
|
||
|
var s = e.data,
|
||
|
xhr = $.ajaxSettings.xhr(),
|
||
|
f;
|
||
|
if (!origin.test(e.origin)) {
|
||
|
throw new Error('Origin "' + e.origin + '" does not match ' + origin);
|
||
|
}
|
||
|
if (!target.test(e.data.url)) {
|
||
|
throw new Error('Target "' + e.data.url + '" does not match ' + target);
|
||
|
}
|
||
|
$(xhr.upload).on('progress', function (ev) {
|
||
|
ev = ev.originalEvent;
|
||
|
e.source.postMessage({
|
||
|
id: s.id,
|
||
|
type: ev.type,
|
||
|
timeStamp: ev.timeStamp,
|
||
|
lengthComputable: ev.lengthComputable,
|
||
|
loaded: ev.loaded,
|
||
|
total: ev.total
|
||
|
}, e.origin);
|
||
|
});
|
||
|
s.xhr = function () {
|
||
|
return xhr;
|
||
|
};
|
||
|
if (!(s.data instanceof Blob)) {
|
||
|
f = new FormData();
|
||
|
$.each(s.data, function (i, v) {
|
||
|
f.append(v.name, v.value);
|
||
|
});
|
||
|
s.data = f;
|
||
|
}
|
||
|
$.ajax(s).always(function (result, statusText, jqXHR) {
|
||
|
if (!jqXHR.done) {
|
||
|
jqXHR = result;
|
||
|
result = null;
|
||
|
}
|
||
|
e.source.postMessage({
|
||
|
id: s.id,
|
||
|
status: jqXHR.status,
|
||
|
statusText: statusText,
|
||
|
result: result,
|
||
|
headers: jqXHR.getAllResponseHeaders()
|
||
|
}, e.origin);
|
||
|
});
|
||
|
});
|
||
|
</script>
|
||
|
</body>
|
||
|
</html>
|