遇到一直没解决的问题,有些HTML页面,内容少的,即点即开,可是遇到内容多的,我这边点击后,要过好久才能打开页面,严重影响体验感,我看到别人网页,都是点击链接后,先打开空白窗口,然后再逐渐加载内容,或者是先弹出加载进度条,然后等加载完毕再打开页面,但这两种页面我不会实现,请指教,万分感谢!
3条回答 默认 最新
- Kwan的解忧杂货铺@新空间代码工作室 2024-06-01 11:28关注
上午好☀️☀️☀️️
本答案参考ChatGPT-3.5实现点击链接先打开一个空窗口(新标签页)然后加载内容的方法:
-
使用JavaScript和HTML:
- 在HTML中,为你的链接添加
target="_blank"
属性,这将使其在新的浏览器标签页中打开。
<a href="your_long_content_url" target="_blank">点击加载内容</a>
- 在HTML中,为你的链接添加
-
使用JavaScript异步加载内容:
- 当新标签页打开时,你可以使用
window.open
方法创建窗口,然后在后台异步加载内容。这里需要结合fetch
或者axios
等库来获取内容。
function loadContent(url) { const win = window.open('', '_blank'); win.addEventListener('load', function() { fetch(url) .then(response => response.text()) .then(content => { // 将内容填充到新窗口的body中 win.document.body.innerHTML = content; }); }); } loadContent('your_long_content_url');
- 当新标签页打开时,你可以使用
-
显示加载进度条:
- 可以在新窗口中添加一个简单的进度条,当内容开始加载时显示,加载完成后隐藏。
<div id="progressBar" style="display: none;">加载中...</div>
function showProgress(win) { const progressBar = win.document.getElementById('progressBar'); progressBar.style.display = 'block'; } function hideProgress(win) { const progressBar = win.document.getElementById('progressBar'); progressBar.style.display = 'none'; } // ... 在fetch的then回调中,在开始和结束时调用showProgress和hideProgress
确保你的服务器响应速度快,同时考虑分块加载大内容,以改善用户体验。如果内容是动态生成的,可能需要优化服务器端逻辑或使用懒加载技术。
解决 无用评论 打赏 举报 编辑记录 -
悬赏问题
- ¥30 AVL fire DVI中的Design Explorer里面的Run的Status为什么总是Terminated?哪里出问题了?需要修改哪里?
- ¥15 有二开IOT平台code的来搞钱了。
- ¥15 求lingo语言编程以下内容
- ¥15 cannot import name '_MissingValues' from 'sklearn.utils._param_validation'引用smoke
- ¥15 shiro springboot集成问题
- ¥15 求PHP跨站免登录技术
- ¥15 AVL fire DVI中的Design Explorer里面的Objectives /Constraints的scale应该怎么设置
- ¥15 qml如何绘制三维笛卡尔坐标系并向其中添加折线?
- ¥15 treelib库有读取树数据方法吗?
- ¥15 咨询一个PYTHON的问题