You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现HTML中data标签存储的URL在新标签页打开

store-badge组件点击跳转新标签页实现方案

实现原理

store-badge组件异步加载完成后,会自动把你定义的.store-badge容器渲染为对应应用商店的<a>跳转标签,默认没有配置新标签打开的参数,只需要给渲染生成的<a>标签添加target="_blank"属性即可实现需求。

具体操作代码

你可以直接在原有代码基础上追加一段JS逻辑,完整代码如下:

<div
  class="store-badge"
  data-name="Cheerswipe"
  data-google-play-url="https://play.google.com/store/apps/details?id=fr.puyou.cheerswipe"
  data-app-store-url="https://apps.apple.com/us/app/cheerswipe/id1468158095?ls=1"
></div>
<script async src="https://cdn.jsdelivr.net/npm/store-badge@1/build/bundle.js"></script>
<!-- 新增的新标签打开逻辑 -->
<script>
document.addEventListener('DOMContentLoaded', () => {
  // 轮询等待组件渲染完成,避免异步加载的组件还没生成DOM就执行逻辑
  const checkRenderTimer = setInterval(() => {
    const badgeAnchors = document.querySelectorAll('.store-badge a')
    if (badgeAnchors.length) {
      badgeAnchors.forEach(anchor => {
        anchor.setAttribute('target', '_blank')
        // 补充安全属性,避免新页面漏洞风险
        anchor.setAttribute('rel', 'noopener noreferrer')
      })
      clearInterval(checkRenderTimer)
    }
  }, 100)
})
</script>

补充说明

  • 如果你使用的是更高版本的store-badge组件,可以优先查看官方文档是否支持直接配置data属性开启新标签打开,无需额外写JS逻辑,上述方案兼容所有v1.x版本的store-badge组件。
  • 代码里的100毫秒轮询间隔不会影响页面性能,只要检测到组件渲染完成就会自动销毁定时器。

内容的提问来源于stack exchange,提问作者Gogobella64 Gfdrdrd

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 14:27:03