Naja fid remove extension

Petr Parolek
Člen | 455
+
0
-

Ahoj,

s Javascriptem mnohokrát zápasím. Nikde jsem nenarazil, jak přes Naju odstranit fid z url po redirectu. Pro nette.ajax.js existuje https://github.com/…move.ajax.js . Pomohl by mi někdo prosím?

Martk
Člen | 652
+
0
-

Jakmile proběhne refresh celé stránky (neajaxově), tak na to nepotřebuješ nic z naji. Dokonce bys nepotřeboval ani nette.ajax.js, protože jestli se nepletu, tak init se používá jen při nastartování. Stačí si z toho vyextrahovat logiku a tu následně použít čistě v javascriptu.

	function removeFid(url, pos) {
		url = url.substr(0, pos) + url.substr(pos + 9);
		if ((url.substr(pos - 1, 1) === '?') || (url.substr(pos - 1, 1) === '&')) {
			url = url.substr(0, pos - 1) + url.substr(pos);
		}
		return url;
	}
		setTimeout(function () {
			var url = window.location.toString();
			var pos = url.indexOf('_fid=');
			if (pos !== -1) {
				window.history.replaceState({}, null, removeFid(url, pos));
			}
		}, 3000);

Edit: Tohle jsem měl v plánu delší dobu, ale stále jsem to odkládal, tak tady je aktuálnější kód:

function removeSearchParamInUrlAndHistory(name) {
	const url = new URL(window.location.toString());
	if (!url.searchParams.has(name)) {
		return;
	}

	url.searchParams.delete(name);
	window.history.replaceState({}, null, url.toString());
}

setTimeout(() => removeSearchParamInUrlAndHistory('_fid'), 3000);

Editoval Martk (12. 3. 2022 12:29)

NouF
Backer | 65
+
0
-

Díky za ten update, funguje :)