1

我试图在右键单击时打开一个小弹出窗口,使用 javascript 显示 html 内容。

它确实会打开一个具有给定尺寸的弹出窗口-ie8。我不想硬编码任何高度和宽度的值。根据加载的内容,它应该自动调整大小,或者它应该允许用户至少调整弹出的 ie8 窗口的大小,但它不允许我调整大小。

任何帮助将不胜感激。

下面是代码

function opendinhtml(html, nm, wid, hei) {
    var w = 480,
        h = 340;
    if (document.all) {
        w = document.body.clientWidth;
        h = document.body.clientHeight;
    } else if (document.layers) {
        w = window.innerWidth;
        h = window.innerHeight;
    }
    var leftPos = (w - wid) / 2,
        topPos = (h - hei) / 2;
    var abcd = window.open("", nm, 'wid=' + wid + ',hei=' + hei + ',top=' + topPos + ',left=' + leftPos);
    abcd.document.open();
    abcd.document.write(htmlText);
    abcd.document.close();
}
4

1 回答 1

0

你可以试试sizeToContent()

abcd.sizeToContent();

但这不太可能奏效。现代浏览器允许用户对以下内容进行完全授权:

  • 当新的浏览器窗口打开时
  • 它会有什么控制
  • 它将是什么尺寸

来自MDN 的常见问题解答window.open

如何调整窗口大小以适应其内容?

您不能可靠,因为用户可以通过取消选中编辑/首选项/高级/脚本和插件/允许脚本到/移动或调整现有窗口的大小在 Mozilla 或工具/选项.../内容中的复选框来防止调整窗口大小选项卡/启用 Javascript/高级按钮/在 Firefox 中移动或调整现有窗口复选框或通过在 about:config 中将 dom.disable_window_move_resize 设置为 true 或通过相应地编辑其 user.js 文件。

链接上还有更多要阅读的内容,我强烈建议您这样做。

作为设计考虑,弹出式浏览器窗口与 Spice Girls 大约在同一时间过时(并且有充分的理由)。您是否考虑过使用对话框(基本上是div覆盖在页面上的元素)?与弹出窗口相比,对话框是:

  • 易于控制
  • 易于调整大小
  • 能够接受 AJAX 内容
  • 不受弹出窗口拦截器的约束
  • 用普通的 JavaScript 实现并不难
  • 使用 JavaScript DOM 操作库(如但不限于 jQuery)快速完成
于 2013-06-19T03:17:10.837 回答