html5怎么嵌入天气插件_html5嵌入天气实时显示【步骤】

发布时间 - 2026-01-28 00:00:00    点击率:
使用 OpenWeatherMap API 可实现 HTML5 页面天气嵌入:注册获取 appid 后通过 fetch 请求 JSON 数据,DOM 渲染城市、温度、天气描述;需 HTTP 服务器运行、缓存防限流、本地化图标提升体验。

用 JavaScript 调用天气 API 实现 HTML5 页面嵌入

HTML5 本身不提供天气功能,必须靠外部 API + fetchXMLHttpRequest 获取数据,再用 DOM 操作渲染。主流免费方案是使用 OpenWeatherMap(需注册获取 appid),它支持 JSON 响应、跨域(CORS)、城市名/经纬度查询,适合前端直连。

常见错误:直接在本地 file:// 打开 HTML 文件,浏览器会因 CORS 拒绝请求;必须通过本地服务器(如 python3 -m http.server)或部署后访问。

  • 注册获取免费 appid(限 1000 次/天),地址:https://home.openweathermap.org/api_keys
  • API 地址示例:https://api.openweathermap.org/data/2.5/weather?q=Beijing&appid=YOUR_KEY&units=metricunits=metric 返回摄氏度)
  • 响应中关键字段:data.main.temp(当前温度)、data.weather[0].description(天气描述)、data.name(城市名)

在 HTML 中插入实时更新的天气显示区域

不要用 iframe 套第三方天气站——样式难控、加载慢、可能被屏蔽。推荐纯 JS 渲染,结构清晰可控:

  
  
  

对应 JS 示例(放在 标签内或外部 JS 文件中):

function loadWeather() {
  const city = 'Shanghai';
  const appid = 'your_appid_here';
  fetch(`https://api.openweathermap.org/data/2.5/weather?q=${city}&appid=${appid}&units=metric`)
    .then(r => r.json())
    .then(data => {
      document.getElementById('weather-city').textContent = data.name;
      document.getElementById('weather-temp').textContent = Math.round(data.main.temp) + '°C';
      document.getElementById('weather-desc').textContent = data.weather[0].description;
    })
    .catch(err => console.error('天气加载失败:', err));
}
loadWeather();
// 每 10 分钟刷新一次
setInterval(loadWeather, 600000);

注意:fetch 在 IE 中不支持,如需兼容旧浏览器,改用 XMLHttpRequest 或引入 whatwg-fetch polyfill。

避免跨域、密钥泄露和频繁请求被限流

前端直连天气 API 最容易踩三个坑:跨域失败、appid 暴露在源码中、单位时间请求超限导致返回 429 Too Many Requests

  • 跨域问题:OpenWeatherMap 支持 CORS,但仅限 HTTP(S) 协议访问,file:// 下必失败
  • appid 泄露风险:虽然 OpenWeatherMap 允许前端使用,但建议限制 referer(在后台设置白名单域名),否则他人可盗用你的配额
  • 限流应对:免费版每分钟最多 60 次,页面多个用户同时刷新易触发。可用 localStorage 缓存结果并设定过期时间(比如 10 分钟),减少重复请求

移动端适配与图标显示(可选增强)

单纯文字不够直观,加个天气图标能提升体验。OpenWeatherMap 提供图标 URL:http://openweathermap.org/img/wn/${icon_code}@2x.png,其中 icon_code 来自 data.weather[0].icon(如 "04d")。

插入图标只需一行:

document.getElementById('weather-icon').src = 
  `http://openweathermap.org/img/wn/${data.weather[0].icon}@2x.png`;

但要注意:图标 CDN 不支持 HTTPS Referer 限制,且无缓存头,建议下载常用图

标到本地静态目录,避免外链失效或加载延迟。另外,移动端小屏下建议用 flex 布局控制图标+文字对齐,避免换行错位。

真实项目里,天气数据往往只是页面一小块,别让它拖慢首屏;异步加载、错误 fallback(如显示“--°C”)、加载状态提示(如 “正在获取…”)这些细节,比功能本身更影响用户体验。


# javascript  # python  # java  # html  # js  # 前端  # json  # html5  # 浏览器  # app  # ai  # cdn 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 昵图网官方站入口 昵图网素材图库官网入口  教学论文网站制作软件有哪些,写论文用什么软件 ?  Laravel distinct去重查询_Laravel Eloquent去重方法  太平洋网站制作公司,网络用语太平洋是什么意思?  CSS3怎么给轮播图加过渡动画_transition加transform实现【技巧】  Laravel如何部署到服务器_线上部署Laravel项目的完整流程与步骤  实例解析angularjs的filter过滤器  jimdo怎样用html5做选项卡_jimdo选项卡html5实现与切换效果【指南】  Laravel如何实现数据库事务?(DB Facade示例)  Laravel如何将应用部署到生产服务器_Laravel生产环境部署流程  Laravel如何优化应用性能?(缓存和优化命令)  Laravel如何实现事件和监听器?(Event & Listener实战)  Laravel如何集成Inertia.js与Vue/React?(安装配置)  Android仿QQ列表左滑删除操作  Laravel如何实现本地化和多语言支持?(i18n教程)  油猴 教程,油猴搜脚本为什么会网页无法显示?  如何选择PHP开源工具快速搭建网站?  详解Nginx + Tomcat 反向代理 负载均衡 集群 部署指南  香港服务器网站生成指南:免费资源整合与高速稳定配置方案  新三国志曹操传主线渭水交兵攻略  Python数据仓库与ETL构建实战_Airflow调度流程详解  装修招标网站设计制作流程,装修招标流程?  Thinkphp 中 distinct 的用法解析  Laravel的辅助函数有哪些_Laravel常用Helpers函数提高开发效率  如何快速搭建虚拟主机网站?新手必看指南  奇安信“盘古石”团队突破 iOS 26.1 提权  软银砸40亿美元收购DigitalBridge 强化AI资料中心布局  Laravel控制器是什么_Laravel MVC架构中Controller的作用与实践  创业网站制作流程,创业网站可靠吗?  Laravel如何生成URL和重定向?(路由助手函数)  如何彻底卸载建站之星软件?  头像制作网站在线观看,除了站酷,还有哪些比较好的设计网站?  如何用景安虚拟主机手机版绑定域名建站?  JavaScript 输出显示内容(document.write、alert、innerHTML、console.log)  如何在宝塔面板创建新站点?  如何快速查询网站的真实建站时间?  如何在IIS管理器中快速创建并配置网站?  Laravel如何从数据库删除数据_Laravel destroy和delete方法区别  如何挑选优质建站一级代理提升网站排名?  简历没回改:利用AI润色让你的文字更专业  Laravel定时任务怎么设置_Laravel Crontab调度器配置  node.js报错:Cannot find module 'ejs'的解决办法  JavaScript如何实现错误处理_try...catch如何捕获异常?  矢量图网站制作软件,用千图网的一张矢量图做公司app首页,该网站并未说明版权等问题,这样做算不算侵权?应该如何解决?  Laravel如何使用.env文件管理环境变量?(最佳实践)  Laravel Debugbar怎么安装_Laravel调试工具栏配置指南  谷歌浏览器下载文件时中断怎么办 Google Chrome下载管理修复  高端企业智能建站程序:SEO优化与响应式模板定制开发  Windows驱动无法加载错误解决方法_驱动签名验证失败处理步骤  网站视频制作书签怎么做,ie浏览器怎么将网站固定在书签工具栏?