diff --git a/Tests/LibWeb/Text/expected/navigation/trigger-fragment-navigation-from-js.txt b/Tests/LibWeb/Text/expected/navigation/trigger-fragment-navigation-from-js.txt
new file mode 100644
index 00000000000..d440af6d3b5
--- /dev/null
+++ b/Tests/LibWeb/Text/expected/navigation/trigger-fragment-navigation-from-js.txt
@@ -0,0 +1,2 @@
+#1
+#2
diff --git a/Tests/LibWeb/Text/input/navigation/trigger-fragment-navigation-from-js.html b/Tests/LibWeb/Text/input/navigation/trigger-fragment-navigation-from-js.html
new file mode 100644
index 00000000000..f1d1a30ccde
--- /dev/null
+++ b/Tests/LibWeb/Text/input/navigation/trigger-fragment-navigation-from-js.html
@@ -0,0 +1,10 @@
+
+
+
diff --git a/Userland/Libraries/LibWeb/HTML/Navigation.cpp b/Userland/Libraries/LibWeb/HTML/Navigation.cpp
index 74e1164278e..124ca4c265d 100644
--- a/Userland/Libraries/LibWeb/HTML/Navigation.cpp
+++ b/Userland/Libraries/LibWeb/HTML/Navigation.cpp
@@ -918,6 +918,10 @@ bool Navigation::inner_navigate_event_firing_algorithm(
Optional download_request_filename,
Optional classic_history_api_state)
{
+ // NOTE: Specification assumes that ongoing navigation event is cancelled before dispatching next navigation event.
+ if (m_ongoing_navigate_event)
+ abort_the_ongoing_navigation();
+
auto& realm = relevant_realm(*this);
// 1. If navigation has entries and events disabled, then: