让 child windows 出现在随机位置

Make child windows appear at random locations


^^ 刚刚有人帮我搭建了一个小网站,现在有了不同的想法。

http://alexalmaguer.site90.com/

每当我单击其中一个按钮时,最多会出现 5 个 child windows,并且它们都显示在屏幕中央,因为下面的脚本告诉它们这样做。当只有一个 window 打开时这很好,但现在它们都出现在彼此之上。有什么办法可以改变它,让 windows 出现在随机位置吗?

function wopen(url, name, w, h)
{

  w += 32;
  h += 96;
  wleft = (screen.width - w) / 2;
  wtop = (screen.height - h) / 2;

  if (wleft < 0) {
    w = screen.width;
    wleft = 0;
  }
  if (wtop < 0) {
    h = screen.height;
    wtop = 0;
  }
  var win = window.open(url, name,
    'width=' + w + ', height=' + h + ', ' +
    'left=' + wleft + ', top=' + wtop + ', ' +
    'location=no, menubar=no, ' +
    'status=no, toolbar=no, scrollbars=no, resizable=no');

  win.resizeTo(w, h);

  win.moveTo(wleft, wtop);
  win.focus();
}
  1. 随机wleft and/or wtop
  2. 删除参数中的空格和任何 =no 参数,因为这是默认值。
  3. 删除不需要的功能,除非它们在旧版浏览器上需要

function wopen(url, name, w, h) {

  w += 32;
  h += 96;
  wleft = (screen.width - w) / 2;
  wtop = (screen.height - h) / 2;

  if (wleft < 0) {
    w = screen.width;
    wleft = 0;
  }
  if (wtop < 0) {
    h = screen.height;
    wtop = 0;
  }
  if (wleft > 0) {
    wleft = Math.floor(Math.random() * wleft); // for example
  }
  var win = window.open(url, name,
    'width=' + w + ',height=' + ',left=' + wleft + ',top=' + wtop);

  win.focus();
}

替代方案是不随机化,但记住坐标并每次添加 window 宽度

另一种方法是打开 window,左上角对齐鼠标点击坐标