Skip to content

Commit a40d6de

Browse files
authored
Runtime: fix #707 (#1002)
1 parent e8ee831 commit a40d6de

File tree

3 files changed

+22
-10
lines changed

3 files changed

+22
-10
lines changed

lib/js_of_ocaml/js_of_ocaml_stubs.c

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -232,6 +232,10 @@ void caml_unmount () {
232232
fprintf(stderr, "Unimplemented Javascript primitive caml_unmount!\n");
233233
exit(1);
234234
}
235+
void caml_xmlhttprequest_create () {
236+
fprintf(stderr, "Unimplemented Javascript primitive caml_xmlhttprequest_create!\n");
237+
exit(1);
238+
}
235239
void debugger () {
236240
fprintf(stderr, "Unimplemented Javascript primitive debugger!\n");
237241
exit(1);

lib/js_of_ocaml/xmlHttpRequest.ml

Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -117,13 +117,4 @@ module Event = struct
117117
let loadend = Dom.Event.make "loadend"
118118
end
119119

120-
let create () : xmlHttpRequest Js.t =
121-
let xmlHttpRequest = Js.Unsafe.global##._XMLHttpRequest in
122-
let activeXObject = Js.Unsafe.global##.activeXObject in
123-
try new%js xmlHttpRequest
124-
with _ -> (
125-
try new%js activeXObject (Js.string "Msxml2.XMLHTTP")
126-
with _ -> (
127-
try new%js activeXObject (Js.string "Msxml3.XMLHTTP")
128-
with _ -> (
129-
try new%js activeXObject (Js.string "Microsoft.XMLHTTP") with _ -> assert false)))
120+
external create : unit -> xmlHttpRequest Js.t = "caml_xmlhttprequest_create"

runtime/jslib_js_of_ocaml.js

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -249,3 +249,20 @@ function caml_js_export_var (){
249249
else
250250
return joo_global_object;
251251
}
252+
253+
254+
//Provides: caml_xmlhttprequest_create
255+
//Requires: caml_failwith
256+
//Weakdef
257+
function caml_xmlhttprequest_create(unit){
258+
var g = joo_global_object;
259+
if(typeof g.XMLHttpRequest !== 'undefined') {
260+
try { return new g.XMLHttpRequest } catch (e) { };
261+
}
262+
if(typeof g.activeXObject !== 'undefined') {
263+
try { return new g.activeXObject("Msxml2.XMLHTTP") } catch(e){ };
264+
try { return new g.activeXObject("Msxml3.XMLHTTP") } catch(e){ };
265+
try { return new g.activeXObject("Microsoft.XMLHTTP") } catch(e){ };
266+
}
267+
caml_failwith("Cannot create a XMLHttpRequest");
268+
}

0 commit comments

Comments
 (0)