javascript - 生成查看链接JS
问题描述
我有一个静态网站(HTML、CSS、JS),人们可以在其中跟踪他们的时间。
我想要它,以便他们可以生成一个链接,该链接创建一个新的 html 页面来显示他们的时间。我希望此链接可共享,以便其他人可以看到时间。
例如
我给自己计时,享受我想分享的美好时光。我生成了一个链接到该时间的链接,并将其发送给我的朋友,他们单击该链接可以看到时间和与之相关的其他详细信息。
这是可能的,如果是的话,怎么做?
谢谢
解决方案
我做了一个工作演示,向您展示没有数据库可以做什么,并保持数据不被修改和“安全”。
当您按“共享”时,它会使用btoa JS 函数将您的时间和名称值编码为 url,然后生成一个链接。
当有人去链接时,它会从 URL 中读取参数?time=XXX?name=XXXX
,然后使用atob JS 函数对其进行解码,然后设置名称和计时器元素文本以显示在页面上。
注意:删除 first const queryString = '?time=MTBtMjFz&name=Q29kZXJHdXJ1WFla';
并取消注释 const queryString = '?time=MTBtMjFz&name=Q29kZXJHdXJ1WFla';
以使此代码在您的页面服务器上工作。
window.onload = function() {
let timerEl = document.getElementById('timer');
let nameEl = document.getElementById('name');
const queryString = '?time=MTBtMjFz&name=U2FtIEJaRVo='; //Get the time parameter index.html?time=MTBtMjFz&name=Q29kZXJHdXJ1WFla" from URL (encoded with javascript)
//Uncomment next line in production
//const queryString = window.location.search;
if (queryString !== '') {
const urlParams = new URLSearchParams(queryString);
const time = urlParams.get('time');
const name = urlParams.get('name');
timerEl.innerText = window.atob(time);
nameEl.innerText = window.atob(name)
}
let share = document.getElementById('share');
share.addEventListener('click', function(e) {
//Generate URL
document.getElementById('sharelink').innerText = 'http://example.com/timer.html?time=' + window.btoa(timerEl.innerText) + '&name=' + window.btoa(nameEl.innerText);
});
}
<!-- Consider this page URL is http://example.com/timer.html -->
<main>
<h1>I'm <span id="name"></span></h1>
<h2> My time is: <span id="timer"></span></h2>
<button id="share">Share my time !</button>
<h3 id="sharelink"></h3>
</main>
推荐阅读
- python - 无法连接到 unix:///var/run/docker.sock 上的 Docker 守护程序。docker 守护进程正在运行?
- python - 根据大型 Pandas 数据框中的条件链接行对
- python - 异常类型:RelatedObjectDoesNotExist 异常值:购物车没有所有者。Django-电子商务
- vue.js - 如何通过按下按钮(vue3)更改li背景颜色?
- python - 如何在循环中跳出循环?Python
- javascript - 在 JS 中泛化多个 get 函数
- ios - XCode 无法打开项目
- wordpress - 如何使用 ACF 在 WPGraphQL 中返回 MediaItem
- reactive-programming - WebFlux:多个 concatWith 的正确方法
- java - 为什么 IDE 会强制转换为他为泛型类生成的 equals 方法中的类型?