2

をオーバーライドしようとしてwindow.open()いるので、。なしで新しいウィンドウでリンクを開く方法を見つけようとしていますwindow.open()

詳細には、私はそのような状況にありHTMLWindow.Navigate()ます。新しいウィンドウでハイパーリンクを開くために使用するSilverlight Webパーツを<a>持っているので、Webパーツを完全に制御できないため、使用できません。唯一の方法は、をオーバーライドすることwindow.open()です。

たとえば、トップウィンドウでリンクを開きたい場合は、次のwindow.open()ようにオーバーライドします。

window.open = function (open) {
    return function (url, name, features) {
            window.top.location = url;    
            return false;
       };
    }(window.open);

新しいウィンドウでリンクを開く同様の方法はありますか?どうもありがとうございます!

PS:オーバーライドしているので、ここではアンカーを使用できませんwindow.open()

この問題のために私が最終的にしたこと:

まず、コピーを作成しましたwindow.open()

var _open = window.open;

次に、関数をオーバーライドしwindow.open()ます。たとえば、「target」がクエリ文字列を受け取る変数であるとします。デフォルトの動作は、現在のウィンドウでリンクを開くことであることに注意してください。

if (target == "top")
    {
        window.open = function (open) {
            return function (url, name, features) {
                window.top.location = url;
                return false;
           };
        }(window.open);
    }
else if (target == "blank")
{
    window.open = function (open) {
            return function (url, name, features) {
                return open_(url, '_blank', features);
           };
        }(window.open);
}
4

1 に答える 1

1

javascriptだけでは、を使用せずに新しいウィンドウを開くことはできませんwindow.open()。また、新しいブラウザでウィンドウを開く方法には影響しません。これが新しいタブを開くか新しいウィンドウを開くかは、ブラウザの設定によって異なります。

-elementで定義することにより、新しいウィンドウが必要であることを宣言できますが、ユーザーはそれをクリックする必要があります。それ以外の場合、javascriptでクリックをトリガーすると、ブラウザのポップアップブロッカーが発生します。<atarget="_blank"href="..."></a>a

于 2013-01-17T10:08:03.130 に答える