有些时候我们需要对不同地域的用户做一些限制,比如在北京的用户不能查看文章正文等。如何判断用户所在的地域并针对不同的地域做出限制呢?这里利用sohu的地域判断API。这篇文章用Butterfly的评论功能做地域限制为例子。

本文以pug代码为例,html代码在文章后面。

城市获取

1
2
3
4
script(language='javascript', type='text/javascript', src='//pv.sohu.com/cityjson')
script(language='javascript', type='text/javascript').
var city = returnCitySN['cname'];
//- console.log(city)

city变量则为城市名。例如北京市。然后可以通过city变量内容字符串是否包含北京即可。

判断逻辑

1
2
3
4
5
6
7
8
9
10
11
12
13
14
if(city.indexOf('北京') == -1){
if ('!{theme.comments.use[0]}' === 'Twikoo' || !!{theme.comments.lazyload}) {
if (!{theme.comments.lazyload}) btf.loadComment(document.getElementById('twikoo-wrap'), loadTwikoo)
else loadTwikoo(true)
} else {
window.loadOtherComment = () => {
loadTwikoo()
}
}
}else{
let $dom = document.querySelector('#post-comment')
let result = `<div>评论服务故障不可用,如有疑问,请联系 <a href="mailto:zh@zhheo.com">zh@zhheo.com</a></div>`
$dom.innerHTML = result;
}

html代码

1
2
3
4
5
<script language="javascript" type="text/javascript" src="//pv.sohu.com/cityjson"></script>
<script language="javascript" type="text/javascript">
var city = returnCitySN['cname'];
//- console.log(city)
</script>

参考文章

JS屏蔽地区(城市)访问网站以及屏蔽PC端访问