доступ javascript запрещен при изменении размера окна URL из другого домена - PullRequest
1 голос
/ 06 февраля 2011

У меня есть пользовательская функция, которая открывает окно в центр экрана из другого 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

Ответы [ 2 ]

1 голос
/ 21 июня 2012

Есть много вещей безопасности, которые браузер и ОС проверяют для любого окна.

для этого случая я не уверен, но попробуйте это также. если во время изменения размера окна браузера через код js нажать и удерживать кнопку мыши, вы получите сообщение об отказе в доступе.

причина в том, что ОС запрещает подобные действия, когда реальные физические пользователи готовы к событию перетаскивания мышью.

см. Ниже URL http://prcoldfusion.blogspot.com/2012/06/access-denied-javascript-error-internet.html

1 голос
/ 06 февраля 2011

Проблема в том, что вы пытаетесь открыть окно с отдельным доменом, что в IE7 и выше считается проблемой безопасности. По сути, когда вы открываете это новое окно, оно создает новый процесс и оставляет ваш процесс отдельным, поэтому вы больше не можете манипулировать этим другим окном.

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

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

Итак, открыв это новое окно с доменом, отличным от вашего, вы теряете контроль над ним. Я не вижу способа изменить это без настройки компьютера конечного пользователя.

EDIT

Хм, очевидно, вы можете обойти это, открыв окно, которым вы действительно управляете, затем изменив 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).

...