如何让所有其他功能停止,直到用户允许或阻止 Jquery 中的 navigator.geolocation?

Posted

技术标签:

【中文标题】如何让所有其他功能停止,直到用户允许或阻止 Jquery 中的 navigator.geolocation?【英文标题】:How to make all other function stops till user allow or block the navigator.geolocation in Jquery? 【发布时间】:2016-10-31 15:01:09 【问题描述】:

我正在制作注册表格,用户首先让我们知道位置,然后填写表格的其他字段。

但是困难来了,当消息来了,网站想知道位置允许或阻止。其他功能仍然有效。我希望该用户无法填写表格并单击其他任何地方,直到他/她选择是允许还是阻止。但在我的代码中,用户可以做任何事情而无需选择任何东西。

我的位置查询是这样的,但功能不同。

$(document).ready(function() 

  if (navigator.geolocation) 
    navigator.geolocation.getCurrentPosition(successFunction, errorFunction);
  

  //Get the latitude and the longitude;
  function successFunction(position) 
    var lat = position.coords.latitude;
    var lng = position.coords.longitude;
  

  function errorFunction() 
    alert("You have blocked us to know your location . You can't be a journalist without that ...");
    window.location.href = 'index.php';
  

  $(".input").change(function() 
    log(this);
  );

  function log(element) 
    var text = element.val();
    console.log(text);
  

  $('.button_sign').click(function() 
    log(this);
    log('.input');
    alert(lat);
    alert(lng);
  );

);

我的html看起来像

<form>
          <div class="field">
            <input type="text" class="input" id="name_register" placeholder="Name">
            <div id="name_error" class="error_field"></div>
          </div>
          <div class="field">
            <input type="email" class="input" id="email_register" placeholder="Email">
            <div id="email_error" class="error_field"></div>
          </div>
          <div class="field">
            <input type="password" class="input" id="password_register" placeholder="Password">
            <div id="pass_error" class="error_field"></div>
          </div>
          <div class="field">
            <input type="text" id="date_register" class="input" placeholder="DOB">
            <div id="date_error" class="error_field"></div>
          </div>
          <p class="agree"><input type="checkbox" name="checkbox" value="check" id="agree_register" checked/> I have read and agree to the Terms and Conditions and Privacy Policy</p>
          <a  class="button_sign" id="sign_up">Sign up</a>
               </form>

所以我真正的问题是停止所有其他功能,直到用户位置被阻止或允许。并且询问位置应该在任何其他功能之前完成。

【问题讨论】:

这可能有点帮助:***.com/questions/10077606/… @callback 不是这样的 【参考方案1】:

您可以使用布尔值来存储他们是否已允许访问。试试这样的。

var didMakeLocationDecision = false;

$(document).ready(function() 
  if (navigator.geolocation) 
    didMakeLocationDecision = true;
    navigator.geolocation.getCurrentPosition(successFunction, errorFunction);
  

  //Get the latitude and the longitude;
  function successFunction(position) 
    var lat = position.coords.latitude;
    var lng = position.coords.longitude;
  

  function errorFunction() 
    alert("You have blocked us to know your location . You can't be a journalist without that ...");
    window.location.href = 'index.php';
  

  $(".input").change(function() 
    log(this);
  );

  function log(element) 
    var text = element.val();
    console.log(text);
  

  $('.button_sign').click(function() 
    log(this);
    log('.input');
    alert(lat);
    alert(lng);
  );

);

$(document).click(function(e)  
    if (e.button == 0 && !didMakeLocationDecision) 
        e.preventDefault();
        errorFunction();
    
); 

【讨论】:

Error iscoming 'Uncaught ReferenceError: didMakeLocationDecision is not defined'。它不工作@TheValyreanGroup 将该变量的声明移到.ready 函数之外。我已经对代码进行了修改。 还是不行。我仍然可以点击输入并做所有事情。 功能有效。它不允许我点击,但我可以点击输入元素。

以上是关于如何让所有其他功能停止,直到用户允许或阻止 Jquery 中的 navigator.geolocation?的主要内容,如果未能解决你的问题,请参考以下文章

暂时禁用手势识别器滑动功能

如何在超出超时时阻止NodeJS脚本崩溃

阻止所有滚动,直到函数触发

停止光标,直到在javascript中的textarea中更改文本

如何让 Google 停止在 PassportJS 中自动登录用户?

闪亮的如何阻止用户访问选项卡?