gpt4 book ai didi

来自不同域的 url 的窗口调整大小时,javascript 访问被拒绝

转载 作者:行者123 更新时间:2023-11-30 18:47:46 25 4
gpt4 key购买 nike

我有一个自定义函数,可以从不同的 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 上不行

最佳答案

问题是您试图打开一个带有单独域的窗口,这在 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 上)。

关于来自不同域的 url 的窗口调整大小时,javascript 访问被拒绝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4914610/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com