1

我有一个自定义函数,可以从不同的 url 打开一个到屏幕中心的窗口。在我目前的情况下,我正在我的域之外打开一个 url。这是我的功能。

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, scrollbars=yes');
    // +
    //'status=no, toolbar=no, scrollbars=no, resizable=yes');
    win.resizeTo(w, h);
    win.moveTo(wleft, wtop);
    win.focus();
}

这在 IE6 和 FF 上完美运行,但不适用于 IE7

4

2 回答 2

1

问题是您正试图打开一个具有单独域的窗口,在 IE7 及更高版本中,这被认为是一个安全问题。本质上,当您打开该新窗口时,它会创建一个新进程并将您的进程分开,因此您无法再操作该其他窗口。

http://social.msdn.microsoft.com/Forums/en/iewebdevelopment/thread/e9cebb92-f943-4a79-b29b-7376039ea6a0

http://msdn.microsoft.com/en-us/library/Bb250462.aspx

因此,一旦您使用与您自己的域不同的域打开该新窗口,您就会失去对它的控制。在不调整最终用户计算机的情况下,我没有办法改变这一点。

编辑

嗯,显然你可以通过打开一个你可以控制的窗口来解决这个问题,然后将 window.location.href 更改为你的 url。试试这个:

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('about:blank', // <- Note about:blank
                name,
                'width=' + w + ', height=' + h + ', ' +
                'left=' + wleft + ', top=' + wtop + ', ' +
                'location=no, menubar=no, scrollbars=yes');
    // +
    //'status=no, toolbar=no, scrollbars=no, resizable=yes');
    win.location.href = url;
    win.resizeTo(800, 150);
    win.moveTo(wleft, wtop);
    win.focus();
}
wopen('http://www.yahoo.com/', 'yahoo', 250, 250);

我不知道这是否是黑客行为;我很惊讶它很容易解决,至少对于改变窗口大小等等。但是,它可以工作(至少在 IE8 上)。

于 2011-02-06T17:15:25.807 回答
1

浏览器和操作系统会检查任何窗口的许多安全事项。

对于这种情况,我不确定,但也试试这个。如果在通过 js 代码调整浏览器窗口大小时单击并按住鼠标按钮,则会收到拒绝访问错误。

reason is OS denied such activities when real physical users is ready for mouse drag event.

see below url http://prcoldfusion.blogspot.com/2012/06/access-denied-javascript-error-internet.html

于 2012-06-21T18:16:51.630 回答