检查浏览器's定位是否只打开过一次
Check if browser's location turned on Only once
我使用navigator.geolocation.watchPosition函数来检查浏览器的位置是否打开。但是这个函数被调用了不止一次(没有页面加载)。例如,如果我切换到另一个选项卡,然后回到页面的选项卡,它会被调用。
我的代码是<script>
navigator.geolocation.watchPosition(function (position) {
alert("i'm tracking you!");
},
function (error) {
if (error.code == error.PERMISSION_DENIED){
alert("you denied me :-(");
}
});
</script>
我怎么能只调用一次函数?
只需跟踪watchPosition函数是否触发了您的函数:
var firedAlready = false;
navigator.geolocation.watchPosition(function (position) {
if(!firedAlready) {
alert("i'm tracking you!");
firedAlready = true;
}
},
function (error) {
if (error.code == error.PERMISSION_DENIED){
alert("you denied me :-(");
}
});
尝试为您的代码创建一个框!这将确保它只执行一次。
var something = (function() {
var executed = false;
return function () {
if (!executed) {
executed = true;
// do something
}
};
})();
还要考虑禁用navigator.geolocation.clearWatch()
的事件处理程序。例如:
var id;
id = navigator.geolocation.watchPosition(function (position) {
alert("i'm tracking you!");
navigator.geolocation.clearWatch(id);
},
function (error) {
if (error.code == error.PERMISSION_DENIED){
alert("you denied me :-(");
// I suspect this is actually unnecessary since we were denied.
navigator.geolocation.clearWatch(id);
}
});
有关更多详细信息,请查看有关Geolocation.clearWatch()的MDN页面
您可以在已经获得结果时清除位置侦听器。
输入链接描述
或者你可以使用navigator.geolocation. getcurrentposition来测试它是打开还是关闭
您需要将检查权限的状态保存在本地存储中,以便长期使用或更好地使用该站点的cookie,并将首选项保存在那里。
如果你只在页面重载的时候调用一个变量,这个变量会被重新初始化。
你的数据需要是持久的
如果你不熟悉cookie,从这里开始http://www.w3schools.com/js/js_cookies.asp
相关文章:
- $watch回调每次在浏览器中触发,但在测试期间只触发一次
- Chrome扩展程序:浏览器操作单击按钮工作一次
- 每个用户/浏览器会话只加载一次Javascript
- 显示弹出脚本,使其在每个浏览器会话中只弹出一次
- IE9浏览器中的内联ckeditor只工作一次(在弹出面板中)
- 浏览器化只执行一次模块代码,在多个需要调用上
- 如何删除浏览器在一次请求期间添加的所有 Cookie
- 每个浏览器会话弹出cookie一次
- 如何在浏览器中使用F12控制台在javascript中每隔一段时间执行一次
- 在浏览器中只显示PDF一次,然后将其从C#服务器中删除
- 我们可以访问主流HTML页面中浏览器下一次请求的URL吗;s卸载功能
- 检查浏览器's定位是否只打开过一次
- 每个浏览器会话运行一次脚本,但在结束时冻结脚本
- 强制Android浏览器每秒钟重画一次
- 是否存在检测最后一次导航事件是否由后退或前进浏览器按钮引起的方法
- 是否有一种方法可以在web浏览器中一次删除所有事件侦听器
- 重新加载页面只一次是不工作的窗口版本的safari浏览器
- 音频播放一次只在谷歌浏览器的html
- 的位置.哈希只在chrome和safari浏览器中生效一次
- 广告横幅只显示一次浏览器会话