0

我正在为我正在构建的网站使用这个免费模板:http: //blackrockdigital.github.io/startbootstrap-scrolling-nav/

我正在使用地理定位服务(谷歌)。但我不想强迫用户每次进入网站时都按下“批准”,只有当用户导航到/按下“服务”按钮/区域时,我才希望执行我的地理定位功能。有人知道如何解决这个问题吗?

我可以以某种方式检查他们在网站上的位置吗?我可以获得部分 ID,但是如何根据用户当前所在的位置来检查它?

部分示例:

<!-- About Section -->
<section id="About" class="About-section">
    <div class="container">
        <div class="row">
            <div class="col-lg-12">
                <h1>About</h1>
                <h3>Here is text about us</h3>
            </div>
        </div>
    </div>
</section>

<!-- Services Section -->
<section id="Services-pdl" class="Services-section">
    <div class="container">
        <div class="row">
            <div class="col-lg-12">
                <h1>Services</h1>
                <div id="map"></div>
            </div>
        </div>
    </div>
</section>

谢谢。

4

2 回答 2

1

通过使用滚动和单击来解决它(单击按钮时页面滚动到一个部分):

$(window).scroll(function() { 
  if(isScrolledIntoView($(find)))
  {
     setTimeout(function() {
        initMap();
     }, 900);
  }    
});

function isScrolledIntoView(elem)
{
   var $elem = $(elem);
   var $window = $(window);

   var docViewTop = $window.scrollTop();
   var docViewBottom = docViewTop + $window.height();

   var elemTop = $elem.offset().top;
   var elemBottom = elemTop + $elem.height();

   return ((elemBottom <= docViewBottom) && (elemTop >= docViewTop));
}

setTimeout 在 .scroll() 中是必需的,因为当用户单击另一个按钮(在本节下方)时,它将在没有 setTimeout 的情况下执行。不确定 setTimeout 是否会低于 900,但现在可以正常工作。

从这个线程的答案中得到了 isScrolledIntoView():检查滚动后元素是否可见

于 2016-03-04T15:33:51.463 回答
0

如果您正在使用 jQuery(您的页面上可能已经有 - 引导程序),您可以将代码包装在 document.ready() 函数中,如下所示:

$(document).ready(function() {
    // Code to execute
});

让它在页面完成加载时运行。https://learn.jquery.com/using-jquery-core/document-ready/

使用 jQuery,您还可以在单​​击按钮时运行代码,如下所示:

$('#mybutton').on('click', function() {
//Code to execute
});

请参阅此处的 on() 文档http://api.jquery.com/on/

于 2016-03-03T20:04:20.953 回答