diff --git a/frappe/public/js/frappe/router.js b/frappe/public/js/frappe/router.js index 315adab7d0..2005a46cfe 100644 --- a/frappe/public/js/frappe/router.js +++ b/frappe/public/js/frappe/router.js @@ -38,16 +38,17 @@ $("body").on("click", "a", function (e) { return false; }; - const href = e.currentTarget.getAttribute("href"); + const target_element = e.currentTarget; + const href = target_element.getAttribute("href"); + const is_on_same_host = target_element.hostname === window.location.hostname; // click handled, but not by href if ( - e.currentTarget.getAttribute("onclick") || // has a handler + target_element.getAttribute("onclick") || // has a handler e.ctrlKey || e.metaKey || // open in a new tab - href === "#" + href === "#" // hash is home ) { - // hash is home return; } @@ -57,20 +58,20 @@ $("body").on("click", "a", function (e) { if (href && href.startsWith("#")) { // target startswith "#", this is a v1 style route, so remake it. - return override(e.currentTarget.hash); + return override(target_element.hash); } - if (frappe.router.is_app_route(e.currentTarget.pathname)) { + if (is_on_same_host && frappe.router.is_app_route(target_element.pathname)) { // target has "/app, this is a v2 style route. - if (e.currentTarget.search) { + if (target_element.search) { frappe.route_options = {}; - let params = new URLSearchParams(e.currentTarget.search); + let params = new URLSearchParams(target_element.search); for (const [key, value] of params) { frappe.route_options[key] = value; } } - return override(e.currentTarget.pathname + e.currentTarget.hash); + return override(target_element.pathname + target_element.hash); } });