我有一个自定义功能,可以从不同的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
答案 0 :(得分:1)
问题是您正在尝试打开一个具有单独域的窗口,在IE7及更高版本中该域被视为安全问题。基本上,当您打开新窗口时,它会创建一个新进程并使您的进程分离,因此您无法再操纵该其他窗口。
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上)。
答案 1 :(得分:1)
浏览器和操作系统检查任何窗口都有很多安全问题。
对于这种情况,我不确定,但也尝试这个。 如果单击鼠标按钮并在通过js代码调整浏览器窗口大小时按住,则会出现访问被拒绝错误。
原因是当真实物理用户准备好进行鼠标拖动事件时,操作系统会拒绝此类活动。
见下面的网址 http://prcoldfusion.blogspot.com/2012/06/access-denied-javascript-error-internet.html