当overlay div可见时隐藏父级的滚动条

时间:2011-05-26 17:18:52

标签: java wicket

我有一个带有AjaxLink的页面,当点击链接时,将显示覆盖div,其中加载图像覆盖父页面。我找到了一个相关的例子here。它完美地工作。我将案例从AjaxButton更改为AjaxLink。在我的场景中,页面默认具有垂直滚动条。生成此滚动条是因为有一个带有垂直扩展的大表。现在,当显示该叠加div时,滚动条仍然可见。我想要隐藏滚动条。所以我试过了:

Mask.show = function(targetId)
{
  var target=document.getElementById(targetId);
  var mask=document.createElement("div");
  mask.innerHTML=" ";
  mask.className="wicket-mask";
  mask.style.cursor="not-allowed";
  mask.style.zIndex="5000";
  mask.id="wicket_mask_"+targetId;
  document.body.appendChild(mask);
  Mask.offsetMask(mask);

  var spinner=document.createElement("div");
  spinner.innerHTML=" ";
  spinner.className="wicket-spinner";
  spinner.style.cursor="not-allowed";
  spinner.style.zIndex="6000";
  spinner.id="wicket_spinner_"+targetId;
  document.body.appendChild(spinner);
  Mask.centerSpinner(spinner);

  // I have added this
  document.body.style.overflow="hidden";
}

/**
 Hides the mask and spinner
*/
Mask.hide = function(targetId)
{
  var mask=document.getElementById("wicket_mask_"+targetId);
  if (mask!=null) {
   mask.style.display="none";
   document.body.removeChild(mask);
  }
  var spinner=document.getElementById("wicket_spinner_"+targetId);
  if (spinner!=null) {
   spinner.style.display="none";
   document.body.removeChild(spinner);
  }

  // I have added this
  document.body.style.overflow="auto";
}

但没有帮助。该滚动条仍然可见。

我不知道是否可以询问这类与不同网站代码有关的问题。所以我以前道歉。

谢谢和问候。

1 个答案:

答案 0 :(得分:0)

您使用的浏览器是什么?

我怀疑这可能是某些版本的Internet Explorer Quirks模式的情况,请尝试更改doctype以进入“标准模式”。

您可以尝试:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

如果你不能改变doctype,你也可以尝试将该属性应用于document.documentElement