【问题标题】:How to execute some code based on ip address in javascript or jQuery?如何在 javascript 或 jQuery 中基于 ip 地址执行一些代码?
【发布时间】:2022-02-07 18:24:47
【问题描述】:

我正在尝试制作我的网站的高级版本,并只允许高级会员查看一些 div 或隐藏广告等。我想根据 IP 地址来做。为此,我在网上搜索并找到了这个 sn-p:

<script type="text/javascript" src="https://l2.io/ip.js?var=userip"></script>
<script type="text/javascript">
if (userip== 0.0.0.0 || 1.1.1.1) { // More addresses as required. Given addresses are for example only
document. getElementsByClassName('ads-here'). style. display = "none";
}</script>

但与往常一样,上面的代码不起作用。我试着做document.write 并且输出非常好。这里似乎有什么问题。请解释一下。

注意 1:我还在学习 JavaScript。

注意 2:我的网站平台是 Blogger(如果重要的话,Idk)

【问题讨论】:

  • 高级会员肯定有登录名/用户名吗?基于此而不是 IP 来做这件事要好得多(例如,假设我已登录,我希望我在这里的声誉能够在我的不同设备之间转移)。
  • 我认为这上面的 java 标签不合适。至少看起来您正在寻找仅前端的解决方案。
  • 每个可以使用开发者工具的用户都是这个页面的高级用户。为此,您需要一个服务器端创作系统。
  • @Teemu 我认为这个功能很方便,任何人都可以使用 devtools 删除任何页面上的广告,无论是服务器端还是客户端,唯一的区别是它是如何自动化和用户友好。
  • @SohamWani - 可能会有一个 blogspot 指南;我不熟悉那个特定的平台。

标签: javascript html jquery blogger


【解决方案1】:

您的代码document.getElementsByClassName('ads-here').style.display = "none"; 不正确,因为getElementsByClassName 返回的是HTMLCollection,而不是Element。您将不得不遍历document.getElementsByClassName('ads-here') 的结果并将它们的style.display 设置为"none"。示例:

for (const element of document.getElementsByClassName('ads-here')) {
    element.style.display = "none";
}

【讨论】:

  • if里面有for循环吗?不好意思,我是菜鸟……
  • 是的,for循环应该在if里面。 for 循环是 if 中代码的更正版本。
  • 它似乎不起作用。我试着把我的 ip 而不是 0.0.0.0。怎么了?对不起,我不擅长!
  • 嗯,你能检查一下userip变量是否真的等于你的ip吗?
  • 您能否建议替代代码来实现目标?
【解决方案2】:

尝试使用function()。你的 src 没有完全准备好,所以 userip 是 null userip == 0.0.0.0 总是假的。

<script type="text/javascript" src="https://l2.io/ip.js?var=userip"></script>
<script type="text/javascript">
    (function() {
       if (userip== 0.0.0.0 || 1.1.1.1) { // More addresses as required. Given addresses are for example only
       document. getElementsByClassName('ads-here'). style. display = "none";
    }
    })();
    </script>

编辑:让它工作。应该先定义userip。 PS:Ublock Origin 屏蔽了l2.io。

<div class="ads-here"> dsgdfgadf </div>

<script type="text/javascript">
  var userip;
</script>
<script type="text/javascript" src="https://l2.io/ip.js?var=userip"></script>
<script type="text/javascript">
   (function() {
  if (userip == '0.0.0.0') {
      document. getElementsByClassName('ads-here')[0].style.display = "none";
    }
      console.log(userip)
   })();
</script>

【讨论】:

  • 脚本标签没有 async 属性,所以它们应该总是按顺序加载。
  • 试过了,好像不行。你能推荐一个替代方案吗?
  • @soshime 一定会检查的。谢谢!
猜你喜欢
  • 1970-01-01
  • 2016-12-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-28
  • 1970-01-01
  • 2011-05-10
  • 2020-02-11
相关资源
最近更新 更多