Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >使用navigator.language获取用户区域

使用navigator.language获取用户区域
EN

Stack Overflow用户
提问于 2016-08-29 11:35:59
回答 7查看 19.5K关注 0票数 22

一段时间以来,我一直在使用这样的东西来获取用户的国家(ISO-3166):

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const region = navigator.language.split('-')[1]; // 'US'

我一直认为的字符串类似于,在en-US中,国家将持有数组的第二位

我认为这个假设是不正确的,根据MDN文档navigator.language返回:“表示BCP 47中定义的语言版本的字符串。”读BCP 47,主语言子标记保证为第一个(例如'en'),但区域代码不一定是第二个子标记。可以有先于区域子标记的子标记并跟随区域子标记。

例如,"sr-Latn-RS" 是一个有效的BCP 47语言标记:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sr                |  Latn           |  RS
primary language  |  script subtag  |  region subtag

navigator.language返回的值是BCP 47的子集,仅包含语言和区域吗?或者,是否有一个库或regex通常用于从语言标记中提取区域子标记?

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2016-09-01 17:52:27

在这里发现的Regex:https://github.com/gagle/node-bcp47/blob/master/lib/index.js

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var re = /^(?:(en-GB-oed|i-ami|i-bnn|i-default|i-enochian|i-hak|i-klingon|i-lux|i-mingo|i-navajo|i-pwn|i-tao|i-tay|i-tsu|sgn-BE-FR|sgn-BE-NL|sgn-CH-DE)|(art-lojban|cel-gaulish|no-bok|no-nyn|zh-guoyu|zh-hakka|zh-min|zh-min-nan|zh-xiang))$|^((?:[a-z]{2,3}(?:(?:-[a-z]{3}){1,3})?)|[a-z]{4}|[a-z]{5,8})(?:-([a-z]{4}))?(?:-([a-z]{2}|\d{3}))?((?:-(?:[\da-z]{5,8}|\d[\da-z]{3}))*)?((?:-[\da-wy-z](?:-[\da-z]{2,8})+)*)?(-x(?:-[\da-z]{1,8})+)?$|^(x(?:-[\da-z]{1,8})+)$/i;

let foo = re.exec('de-AT');      // German in Austria
let bar = re.exec('zh-Hans-CN'); // Simplified Chinese using Simplified script in mainland China

console.log(`region ${foo[5]}`); // 'region AT'
console.log(`region ${bar[5]}`); // 'region CN'
票数 2
EN

Stack Overflow用户

发布于 2016-09-01 11:36:24

您的解决方案基于错误的前提,即浏览器的语言标记可靠地匹配用户的国家。我已经把我的浏览器语言设置为德语,尽管我目前住在德国附近,而是在美国。

另外,例如在Chrome中,许多语言包不要求您指定区域修饰符。将Chrome显示语言设置为德语

提供以下语言标记:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
> navigator.language
< "de"

根本没有区域标记,而且是一种相当通用的语言。

底线是,我的浏览器设置会导致语言标签de,即使我住在美国。

确定用户位置的一种更准确和可能更可靠的方法是从与请求关联的IP地址派生出该地址。有许多服务提供这种服务。ip-api.com就是其中之一:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$.get("http://ip-api.com/json", function(response) {
  console.log(response.country);     // "United States"
  console.log(response.countryCode); // "US"
}, "jsonp");
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

票数 10
EN

Stack Overflow用户

发布于 2021-08-08 15:26:31

现在可以使用国际化API中的现场对象从区域设置标识符中提取该区域。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const { region } = new Intl.Locale('sr-Latn-RS') // region => 'RS'

请注意,这与Internet Explorer当前不兼容。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39213855

复制
相关文章
获取点击的区域范围
点击的元素在哪个像素范围 父组件 <div> <div>外部</div> <TestRef ref="testRef"></TestRef> </div> import TestRef from "@/components/TestRef.vue"; mounted() { let obj = {leftRef:"",rightRef:""} console.log("外部mounted") console.log(this.$refs.testR
tianyawhl
2022/11/14
1.3K0
使用Django,怎么获取当前用户IP地址?
上一次分享了获取当前用户的ID,这次来分享获取当前用户的IP地址。获得IP地址后,我们可以做很多事情。比如,当前IP请求太频繁,我们就可以拒绝它的请求或者做限流处理。
TalkPython
2021/01/12
3.4K0
如何使用 PowerShell 钓鱼获取用户密码
欺骗凭证提示是一种有效的权限提升和横向移动技术。在 Windows 环境中遇到 Outlook、VPN 和各种其他身份验证协议看似随机的密码提示并不罕见。攻击者将滥用 Windows 和 PowerShell 中内置的功能来调用凭据弹出窗口来获取用户密码。
Khan安全团队
2021/08/26
5.8K0
如何使用 PowerShell 钓鱼获取用户密码
使用这个在线工具,可以轻松获取全球任意区域的建筑数据
最近体验了一个傻瓜式的AI识别工具,框选一个范围后就可以自动给你生成所选区域的建筑轮廓、道路、森林等数据,操作非常简单。
陈南GISer
2021/08/19
2.5K0
使用这个在线工具,可以轻松获取全球任意区域的建筑数据
工具的使用|MSF中获取用户密码
1:很多用户习惯将计算机设置自动登录,可以使用 run windows/gather/credentials/windows_autologin 抓取自动登录的用户名和密码
谢公子
2022/01/19
2.8K0
工具的使用|MSF中获取用户密码
Spring Security 获取当前用户页面代码获取用户对象代码获取权限
页面 如果只是想从页面上显示当前登陆的用户名,可以直接使用Spring Security提供的taglib。 <%@ taglib prefix="sec" uri="http://www.springframework.org/security/tags" %> <div>username : <sec:authentication property="name"/></div> <sec:authentication property="name" var="a_name"/> <sec:auth
孙亖
2018/06/07
2.7K0
js获取网页屏幕可视区域高度
document.body.clientWidth ==> BODY对象宽度 document.body.clientHeight ==> BODY对象高度 document.documentElement.clientWidth ==> 可见区域宽度 document.documentElement.clientHeight ==> 可见区域高度
kirin
2020/12/23
9.5K0
js获取网页屏幕可视区域高度
如何获取种子用户?
如上图打个比方,土壤好比产品,种子好比用户,无论这片土地好坏他们都想在这里生根发芽,这些种子照顾的好,可能会让这片土地绿茵连连。用一句话概括种子用户就是在一个产品发展早期,对该产品的发展起到重要推动作用的用户,他们通常愿意积极与运营者互动,对产品充满热情。
靠谱先生
2018/09/10
2.2K0
如何获取种子用户?
宝塔Nginx使用CDN后获取用户真实ip
博客小站需要对单ip用户请求进行限制,计划使用宝塔自带得流量管理,而由于全站cdn,服务器记录的访问ip为CDN节点ip,经百度查询,找到了一种很简单的修改办法。
许坏
2019/08/06
4.9K0
宝塔Nginx使用CDN后获取用户真实ip
使用cdn如何获取用户ip cdn是什么
随着互联网技术的进步,很多企业都有了属于自己的企业网站,有些企业建立网站不仅要给用户展示企业的形象以及产品介绍,也为做网站的关键词排名来获取用户资源。从事站长行业的小伙伴基本都会遇到这样一个难题,就是网站后台有时会出现大量的IP地址,而这些地址无法辨别真假。那么使用cdn如何获取用户ip?下面一起来看看。
用户8715145
2021/09/18
3K0
使用cdn如何获取用户ip cdn是什么
微信使用getUserInfo和getUserProfile获取用户信息
getUserProfile是推荐使用的,官方在2021年4月之后,就不在推荐使用getUserInfo来获取用户信息(昵称和头像)。
软件小生活
2021/09/10
2.4K0
获取浏览器可视区域宽高
1 /** 2 * 获取浏览器可视区域宽度 3 */ 4 function getViewPortOffset() { 5 if (window.innerWidth) { 6 return { 7 w: window.innerWidth, 8 h: window.innerHeight 9 } 10 } el
ProsperLee
2018/10/24
9390
Httpcontext 获取用户信息
http://mpvideo.qpic.cn/0bf23qaamaaamyanvrglafpfbxgda3oaabqa.f10002.mp4?dis_k=abd635532fae29e55080d65
老张的哲学
2022/04/11
1K0
spring security 获取当前用户
controller中,直接参数注入 @RequestMapping public void execute(Principal principal){} 其他bean中 SecurityContextHolder.getContext().getAuthentication().getPrincipal()
路过君
2020/07/10
1.4K0
Magicodes.WeiChat——使用OAuth 2.0获取微信用户信息
使用Magicodes.WeiChat,可以很方便的获取到微信用户的信息。在使用OAuth 2.0之前,你先需要做以下操作:
雪雁-心莱科技
2018/12/27
7710
[Python图像处理] 三.获取图像属性、兴趣ROI区域及通道处理
该系列文章是讲解Python OpenCV图像处理知识,前期主要讲解图像入门、OpenCV基础用法,中期讲解图像处理的各种算法,包括图像锐化算子、图像增强技术、图像分割等,后期结合深度学习研究图像识别、图像分类应用。希望文章对您有所帮助,如果有不足之处,还请海涵~
Eastmount
2021/12/02
2.9K0
[Python图像处理] 三.获取图像属性、兴趣ROI区域及通道处理
win10 uwp 从StorageFile获取文件大小 获取用户最近使用文件
在群里看到有大神问我就写出,虽然少,在没看到他们说之前没想到,九幽开发者:53078485
林德熙
2018/09/18
1.7K0
点击加载更多

相似问题

浏览器默认区域设置- Intl.DateTimeFormat vs navigator.language

20

不能嘲笑navigator.language

15

在node-webkit中使用navigator.language?

113

所有语言的navigator.language列表

50

获取脚本上的用户区域设置

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文