75 lines
2.2 KiB
JavaScript
75 lines
2.2 KiB
JavaScript
|
let currentLang = 'zh';
|
||
|
let data, i18n;
|
||
|
|
||
|
document.addEventListener("DOMContentLoaded", () => {
|
||
|
loadData('data.json', loadBlockchainOptions);
|
||
|
changeLanguage(currentLang);
|
||
|
updateCopyrightYear()
|
||
|
});
|
||
|
|
||
|
function updateCopyrightYear() {
|
||
|
const currentYear = new Date().getFullYear();
|
||
|
let copyrightText
|
||
|
if(currentYear > 2024) {
|
||
|
copyrightText = `© 2024-${currentYear} earthjasonlin. All rights reserved.`;
|
||
|
} else {
|
||
|
copyrightText = `© 2024 earthjasonlin. All rights reserved.`;
|
||
|
}
|
||
|
document.querySelector("footer p").innerHTML = copyrightText;
|
||
|
}
|
||
|
|
||
|
function loadData(url, callback) {
|
||
|
fetch(url)
|
||
|
.then(response => response.json())
|
||
|
.then(json => {
|
||
|
data = json;
|
||
|
callback();
|
||
|
})
|
||
|
.catch(error => console.error('Error loading JSON:', error));
|
||
|
}
|
||
|
|
||
|
function loadI18n(url, callback) {
|
||
|
fetch(url)
|
||
|
.then(response => response.json())
|
||
|
.then(json => {
|
||
|
i18n = json;
|
||
|
callback();
|
||
|
})
|
||
|
.catch(error => console.error('Error loading i18n JSON:', error));
|
||
|
}
|
||
|
|
||
|
function loadBlockchainOptions() {
|
||
|
const blockchainSelect = document.getElementById("blockchain");
|
||
|
blockchainSelect.innerHTML = '';
|
||
|
|
||
|
for (const key in data) {
|
||
|
const option = document.createElement("option");
|
||
|
option.value = key;
|
||
|
option.textContent = i18n[key];
|
||
|
blockchainSelect.appendChild(option);
|
||
|
}
|
||
|
updateDonationInfo();
|
||
|
}
|
||
|
|
||
|
function changeLanguage(lang) {
|
||
|
loadI18n(`i18n/${lang}.json`, () => {
|
||
|
document.getElementById("title").textContent = i18n.title;
|
||
|
document.getElementById("copyAddress").textContent = i18n.copyAddress;
|
||
|
loadBlockchainOptions();
|
||
|
});
|
||
|
}
|
||
|
|
||
|
function updateDonationInfo() {
|
||
|
const blockchain = document.getElementById("blockchain").value;
|
||
|
document.getElementById("qr-code").src = data[blockchain].qr;
|
||
|
document.getElementById("address").textContent = data[blockchain].address;
|
||
|
document.getElementById("blockchain-icon").src = data[blockchain].icon;
|
||
|
}
|
||
|
|
||
|
function copyAddress() {
|
||
|
const address = document.getElementById("address").textContent;
|
||
|
navigator.clipboard.writeText(address).then(() => {
|
||
|
alert(i18n.copyAddressSuccess);
|
||
|
});
|
||
|
}
|