From 09a8700e5eee2141ec3917c9e4add65a539d6a44 Mon Sep 17 00:00:00 2001 From: Erik Martin-Dorel Date: Fri, 28 Jul 2023 00:20:11 +0200 Subject: [PATCH 1/2] fix(url.ml): set_fragment need not any urlencode --- lib/js_of_ocaml/url.ml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/js_of_ocaml/url.ml b/lib/js_of_ocaml/url.ml index 1be4dfe65..eb2312222 100644 --- a/lib/js_of_ocaml/url.ml +++ b/lib/js_of_ocaml/url.ml @@ -322,7 +322,7 @@ module Current = struct let res = Js.match_result res in Js.to_string (Js.Unsafe.get res 1)) - let set_fragment s = l##.hash := Js.bytestring (urlencode s) + let set_fragment s = l##.hash := Js.bytestring s let get () = url_of_js_string l##.href From 1540ceb6bcbdcc45a4cc489b5ba4bd445e60eda5 Mon Sep 17 00:00:00 2001 From: Erik Martin-Dorel Date: Wed, 2 Aug 2023 15:39:32 +0200 Subject: [PATCH 2/2] fix(url.ml): Simplify get_fragment as well and directly use l##.hash; given Firefox' bug https://bugzilla.mozilla.org/show_bug.cgi?id=483304 is closed since 8+ years. --- lib/js_of_ocaml/url.ml | 16 ++++------------ 1 file changed, 4 insertions(+), 12 deletions(-) diff --git a/lib/js_of_ocaml/url.ml b/lib/js_of_ocaml/url.ml index eb2312222..a9791f34e 100644 --- a/lib/js_of_ocaml/url.ml +++ b/lib/js_of_ocaml/url.ml @@ -309,18 +309,10 @@ module Current = struct else l##.search) let get_fragment () = - (* location.hash doesn't have the same behavior depending on the browser - Firefox bug : https://bugzilla.mozilla.org/show_bug.cgi?id=483304 *) - (* let s = Js.to_bytestring (l##hash) in *) - (* if String.length s > 0 && s.[0] = '#' *) - (* then String.sub s 1 (String.length s - 1) *) - (* else s; *) - Js.Opt.case - (l##.href##_match (new%js Js.regExp (Js.string "#(.*)"))) - (fun () -> "") - (fun res -> - let res = Js.match_result res in - Js.to_string (Js.Unsafe.get res 1)) + let s = Js.to_bytestring l##.hash in + if String.length s > 0 && Char.equal s.[0] '#' + then String.sub s 1 (String.length s - 1) + else s let set_fragment s = l##.hash := Js.bytestring s