prevent loading twice

This commit is contained in:
do
2024-08-12 18:39:38 +02:00
parent 5335e3d607
commit 07fa46b9a6
8 changed files with 16 additions and 62 deletions

View File

@@ -29,12 +29,11 @@
// Event listener for language selection // Event listener for language selection
document.addEventListener('DOMContentLoaded', () => { document.addEventListener('DOMContentLoaded', () => {
const storedLanguage = getLanguage()
const languageItems = document.querySelectorAll( const languageItems = document.querySelectorAll(
'#language-selector .dropdown-item') '#language-selector .dropdown-item')
if (languageItems.length > 0) { if (languageItems.length > 0) {
const storedLanguage = getLanguage()
// Redirect if the stored language differs from the active language // Redirect if the stored language differs from the active language
if ((storedLanguage) && (document.documentElement.lang !== storedLanguage)) { if ((storedLanguage) && (document.documentElement.lang !== storedLanguage)) {
languageItems.forEach(item => { languageItems.forEach(item => {
@@ -56,7 +55,10 @@
}) })
} }
else{ else{
removeSelectedLanguage(); // Remove stored language if no language selection is available in the dropdown menu. // Redirect to the localized homepage
const defaultLang = '{{ site.LanguageCode | default site.Language.Lang }}'
let language = storedLanguage ? storedLanguage : defaultLang
window.location.href = '/' + language + '/'
} }
}) })
})() })()

View File

@@ -1,8 +0,0 @@
window.onload = function () {
removeSelectedLanguage()
}
// Function to remove the selected language from localStorage
function removeSelectedLanguage () {
localStorage.removeItem('selectedLanguage')
}

View File

@@ -1,39 +0,0 @@
---
author: Mark Dumay
title: Remove selected language
slug: remove-selected-language
date: 2024-08-09
description: Remove selected language
tags:
- shortcode
thumbnail:
url: img/boots.jpg
author: Nathan Dumlao
authorURL: https://unsplash.com/@nate_dumlao
origin: Unsplash
originURL: https://unsplash.com/photos/QLPWQvHvmII
---
Via the adjustable configuration
`enableLanguageSelectionStorage = true`
in **params.toml** (\exampleSite\config\_default\params.toml)
the selected language is stored in the browser *localStorage* in the "**selectedLanguage**" key.
The script can be found here:
**assets\js\critical\languageSelector.js**
## Remove selected language
If the key is to be removed, the shortcode
**remove-selected-language**
can be used on the respective page.
<!-- markdownlint-disable MD037 -->
{{< example lang="hugo" >}}
{{</* remove-selected-language */>}}
{{< /example >}}
<!-- markdownlint-enable MD037 -->
{{< remove-selected-language >}}

View File

@@ -302,7 +302,6 @@
"mt-auto", "mt-auto",
"multi-docs-collapse-15", "multi-docs-collapse-15",
"multi-file-collapse-1", "multi-file-collapse-1",
"multi-file-collapse-2",
"mx-auto", "mx-auto",
"mx-md-0", "mx-md-0",
"mx-md-2", "mx-md-2",
@@ -491,7 +490,6 @@
"blog", "blog",
"body-docs-collapse-15", "body-docs-collapse-15",
"body-file-collapse-1", "body-file-collapse-1",
"body-file-collapse-2",
"bouton", "bouton",
"breadcrumb", "breadcrumb",
"btn-webshare", "btn-webshare",
@@ -518,7 +516,6 @@
"file", "file",
"footer-docs-collapse-15", "footer-docs-collapse-15",
"footer-file-collapse-1", "footer-file-collapse-1",
"footer-file-collapse-2",
"formula-katex", "formula-katex",
"formule-katex", "formule-katex",
"groupe-de-boutons", "groupe-de-boutons",
@@ -560,7 +557,6 @@
"projets", "projets",
"publication", "publication",
"release", "release",
"remove-selected-language",
"réduire", "réduire",
"spinner", "spinner",
"sub", "sub",

View File

@@ -7,6 +7,10 @@
<meta name="robots" content="noindex"> <meta name="robots" content="noindex">
<meta charset="utf-8"> <meta charset="utf-8">
<noscript><meta http-equiv="refresh" content="0; url={{ .Permalink }}"></noscript> <noscript><meta http-equiv="refresh" content="0; url={{ .Permalink }}"></noscript>
<script src='{{ partial "utilities/GetStaticURL" (dict "url" "js/alias.js") }}'></script> {{ if site.Params.main.enableLanguageSelectionStorage }}
{{- partial "footer/scripts.html" (dict "filename" "js/critical.bundle.js" "match" "js/critical/**.js" "header" true "page" page) -}}
{{ else }}
<script src='{{ partial "utilities/GetStaticURL" (dict "url" "js/alias.js") }}'></script>
{{ end }}
</head> </head>
</html> </html>

View File

@@ -25,13 +25,13 @@
{{- $state := .state | default "async" -}} {{- $state := .state | default "async" -}}
{{- if or $header (eq $state "immediate") }}{{ $state = "" }}{{ end -}} {{- if or $header (eq $state "immediate") }}{{ $state = "" }}{{ end -}}
{{ $config := $page.Scratch.Get "modules" }}
{{ if not $config }}
{{ errorf "partial [footer/scripts.html] - Cannot initialize module configuration" }}
{{ end }}
{{- $modules := "" -}} {{- $modules := "" -}}
{{ if $core }} {{ if $core }}
{{ $config := $page.Scratch.Get "modules" }}
{{ if not $config }}
{{ errorf "partial [footer/scripts.html] - Cannot initialize module configuration" }}
{{ end }}
{{- $modules = $config.core -}} {{- $modules = $config.core -}}
{{- if reflect.IsSlice $config.localize -}} {{- if reflect.IsSlice $config.localize -}}
{{- range $index, $mod := $modules -}} {{- range $index, $mod := $modules -}}

View File

@@ -1,2 +0,0 @@
{{ $languageSelectorRemover := resources.Get "js/optional/languageSelectorRemover.js" | minify | fingerprint -}}
<script defer src="{{ $languageSelectorRemover.RelPermalink }}"></script>

1
package-lock.json generated
View File

@@ -4335,6 +4335,7 @@
"resolved": "https://registry.npmjs.org/npm-run-all/-/npm-run-all-4.1.5.tgz", "resolved": "https://registry.npmjs.org/npm-run-all/-/npm-run-all-4.1.5.tgz",
"integrity": "sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ==", "integrity": "sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ==",
"dev": true, "dev": true,
"license": "MIT",
"dependencies": { "dependencies": {
"ansi-styles": "^3.2.1", "ansi-styles": "^3.2.1",
"chalk": "^2.4.1", "chalk": "^2.4.1",