onClick在运行我的函数之前加载新页面

时间:2015-02-16 00:09:55

标签: javascript html css safari

当用户点击我的链接时,我想要运行一个Javascript函数来隐藏我页面上的所有内容,一旦完成,请点击链接。我在Chrome中使用了以下代码,但在Safari中却没有。

问题是Safari在它之前跟踪链接"隐藏"我的页面。当我说"隐藏"我的页面,我实际上在做的是将页面的容器div设置为" display:none&#34 ;;

(你可能会问我为什么要在点击链接上隐藏我的页面 - 这是因为我在一个小型的Arduino服务器上运行这个网站,它需要几秒钟才能完成新页面加载。因此,我的目标是在您点击链接以模拟更快的加载后,隐藏"当前页面上的所有内容。)

以下是链接的代码:

<a href="add.htm" onclick="return clearScreen();"><span class="clickableDiv"></span>ADD DEVICE</a> 

注意 - 跨度允许可以点击此链接所在的整个div。

以下是该函数的代码:

function clearScreen(){
  document.getElementById("container").style.display = 'none';
  return true;
}

如果我设置返回&#34; false&#34;,它确实有效地将容器显示设置为无。不幸的是,当设置为false时,它显然不会跟随我的链接。

我也尝试过使用window.location.href =&#34; add.htm&#34 ;;我的显示后=&#39;没有&#39 ;; - 但没有运气。

再一次,这在Chrome中完美运行,但在Safari中则无效。

2 个答案:

答案 0 :(得分:0)

试试这个:

<a href="add.htm" onclick="clearScreen(this,event);"><span class="clickableDiv"></span>ADD DEVICE</a>

function clearScreen(link, event){
    event.preventDefault();
    document.getElementById("container").style.display = 'none';
    setTimeout(function(){
        window.location = link.href;
    }, 0);
}

答案 1 :(得分:0)

一旦您开始导航到下一页,Safari似乎就会停止对页面进行更新。您可以尝试使用超时,以便浏览器将控制权恢复到足以进行更新,然后导航到新页面。

在通话中发送href:

<a href="add.htm" onclick="return clearScreen(this.href);">

在函数中返回false,并设置超时以进行导航:

function clearScreen(href){
  document.getElementById("container").style.display = 'none';
  window.setTimeout(function(){
    window.location.href = href;
  }, 0);
  return false;
}