Mercurial > hg > orthanc
comparison OrthancExplorer/libs/jquery-file-upload/js/cors/jquery.postmessage-transport.js @ 57:4bc019d2f969 orthanc-renaming
renaming
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Sun, 16 Sep 2012 09:22:48 +0200 |
parents | PalanthirExplorer/libs/jquery-file-upload/js/cors/jquery.postmessage-transport.js@33d67e1ab173 |
children | 5713952f60c0 |
comparison
equal
deleted
inserted
replaced
56:088c4f23e2c8 | 57:4bc019d2f969 |
---|---|
1 /* | |
2 * jQuery postMessage Transport Plugin 1.1 | |
3 * https://github.com/blueimp/jQuery-File-Upload | |
4 * | |
5 * Copyright 2011, Sebastian Tschan | |
6 * https://blueimp.net | |
7 * | |
8 * Licensed under the MIT license: | |
9 * http://www.opensource.org/licenses/MIT | |
10 */ | |
11 | |
12 /*jslint unparam: true, nomen: true */ | |
13 /*global define, window, document */ | |
14 | |
15 (function (factory) { | |
16 'use strict'; | |
17 if (typeof define === 'function' && define.amd) { | |
18 // Register as an anonymous AMD module: | |
19 define(['jquery'], factory); | |
20 } else { | |
21 // Browser globals: | |
22 factory(window.jQuery); | |
23 } | |
24 }(function ($) { | |
25 'use strict'; | |
26 | |
27 var counter = 0, | |
28 names = [ | |
29 'accepts', | |
30 'cache', | |
31 'contents', | |
32 'contentType', | |
33 'crossDomain', | |
34 'data', | |
35 'dataType', | |
36 'headers', | |
37 'ifModified', | |
38 'mimeType', | |
39 'password', | |
40 'processData', | |
41 'timeout', | |
42 'traditional', | |
43 'type', | |
44 'url', | |
45 'username' | |
46 ], | |
47 convert = function (p) { | |
48 return p; | |
49 }; | |
50 | |
51 $.ajaxSetup({ | |
52 converters: { | |
53 'postmessage text': convert, | |
54 'postmessage json': convert, | |
55 'postmessage html': convert | |
56 } | |
57 }); | |
58 | |
59 $.ajaxTransport('postmessage', function (options) { | |
60 if (options.postMessage && window.postMessage) { | |
61 var iframe, | |
62 loc = $('<a>').prop('href', options.postMessage)[0], | |
63 target = loc.protocol + '//' + loc.host, | |
64 xhrUpload = options.xhr().upload; | |
65 return { | |
66 send: function (_, completeCallback) { | |
67 var message = { | |
68 id: 'postmessage-transport-' + (counter += 1) | |
69 }, | |
70 eventName = 'message.' + message.id; | |
71 iframe = $( | |
72 '<iframe style="display:none;" src="' + | |
73 options.postMessage + '" name="' + | |
74 message.id + '"></iframe>' | |
75 ).bind('load', function () { | |
76 $.each(names, function (i, name) { | |
77 message[name] = options[name]; | |
78 }); | |
79 message.dataType = message.dataType.replace('postmessage ', ''); | |
80 $(window).bind(eventName, function (e) { | |
81 e = e.originalEvent; | |
82 var data = e.data, | |
83 ev; | |
84 if (e.origin === target && data.id === message.id) { | |
85 if (data.type === 'progress') { | |
86 ev = document.createEvent('Event'); | |
87 ev.initEvent(data.type, false, true); | |
88 $.extend(ev, data); | |
89 xhrUpload.dispatchEvent(ev); | |
90 } else { | |
91 completeCallback( | |
92 data.status, | |
93 data.statusText, | |
94 {postmessage: data.result}, | |
95 data.headers | |
96 ); | |
97 iframe.remove(); | |
98 $(window).unbind(eventName); | |
99 } | |
100 } | |
101 }); | |
102 iframe[0].contentWindow.postMessage( | |
103 message, | |
104 target | |
105 ); | |
106 }).appendTo(document.body); | |
107 }, | |
108 abort: function () { | |
109 if (iframe) { | |
110 iframe.remove(); | |
111 } | |
112 } | |
113 }; | |
114 } | |
115 }); | |
116 | |
117 })); |