首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何仅在加载页面的10%时间内执行JavaScript

如何仅在加载页面的10%时间内执行JavaScript
EN

Stack Overflow用户
提问于 2021-10-03 11:50:22
回答 2查看 71关注 0票数 0

我有一个横幅广告网络,通过一些JavaScript代码。如下所示:

代码语言:javascript
复制
<script src="........."</script>

但我有太多重复的观点。

所以我只想在页面加载的10%时间内显示横幅。

有什么简单的解决办法吗?我没有JavaScript知识。

EN

回答 2

Stack Overflow用户

发布于 2021-10-03 12:03:13

你可以创建一个随机数,并检查它是否小于范围的10%。

代码语言:javascript
复制
if (Math.random() <= 0.1) {
  showAds();
}

测试

代码语言:javascript
复制
let runs = 0;
let ads = 0;

function showAds() {
  ++ads;
}

for (let i = 0; i < 1e6; ++i) {
  ++runs;
  if (Math.random() <= 0.1) {
    showAds();
  }
}

console.log(`Runs: ${runs}`);
console.log(`Ads were shown: ${ads}`);
console.log(`${ads/runs * 100} %`);

票数 2
EN

Stack Overflow用户

发布于 2021-10-03 13:07:33

您可以创建一个计数器,该计数器被保存到本地存储(在web浏览器中,因此即使在重新加载页面后也会维护它)。

它可以从0开始,然后在每次重新加载时上升1,直到它在达到9时被重置。

如果计数器为0,则可以将其设置为只运行横幅。

代码语言:javascript
复制
    <script type="text/javascript">
    let counter = localStorage.getItem("counter") ?? 0;
    if (counter == 0) {
        // code placed here will run only on the first of every 10 pageloads
    }
    if (counter >= 0) {
        newCount = (counter == 9) ? 0 : ++counter;
        localStorage.setItem("counter", newCount);
    }
    </script>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69424580

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档