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

ブラウザとOSがウィンドウをチェックする多くのセキュリティ事項があります。

この場合、よくわかりませんが、これも試してください。js コードを使用してブラウザ ウィンドウのサイズを変更するときにマウス ボタンをクリックしたままにすると、アクセス拒否エラーが発生します。

理由は、実際の物理ユーザーがマウスドラッグイベントの準備ができているときに、OS がそのようなアクティビティを拒否したためです。

以下の URL を参照してください http://prcoldfusion.blogspot.com/2012/06/access-denied-javascript-error-internet.html

于 2012-06-21T18:16:51.630 に答える