Merge pull request #18590 from NagariaHussain/fix-link-routing
fix(router-js): handle case when link is not of same host
This commit is contained in:
commit
ae23fd971c
1 changed files with 10 additions and 9 deletions
|
|
@ -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);
|
||||
}
|
||||
});
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue