web-dev-qa-db-ja.com

location.hrefでターゲットを使用する方法

現在、レポートを表示するためにポップアップウィンドウを開く必要があるWebアプリケーションを開発しています。問題は、Explorerの一部のバージョンがwindow.open javascript関数をサポートしていないことです。そのため、この場合はエラーをキャッチし、location.hrefで新しいURLを開きます。ここにコード:

try {
    window.open(url, "","width=1002,height=700,location=0,menubar=0,scrollbars=1,status=1,resizable=0")
} catch(e) {
    location.target = "_blank";
    location.href = url;
}

問題は、location.targetが機能していないことです。location.hrefのターゲットを指定して、新しいタブで開くことができるかどうかを知りたいのですが。

16
user1084509

問題は、Explorerの一部のバージョンがwindow.open javascript関数をサポートしていないことです。

何だって?その声明の参照を提供できますか?敬意を持って、あなたは間違っているに違いないと思います。 これは動作します たとえばIE6とIE9では。

最新のブラウザのほとんどは、スパムのポップアップなどを寄せ付けないために、ユーザーイベントへの直接応答を除き、コードでwindow.openを使用できません。おそらくそれがあなたが考えていることです。ユーザーイベントに応答するときにwindow.openのみを使用する限り、IEのすべてのバージョンでwindow.open —を使用しても問題ありません。

locationを使用して新しいウィンドウを開く方法はありません。ただwindow.open、またはもちろん、ユーザーがtarget="_blank"のリンクをクリックします。

12
T.J. Crowder

アンカーのクリックをシミュレートするこれを試してください。

var a = document.createElement('a');
a.href='http://www.google.com';
a.target = '_blank';
document.body.appendChild(a);
a.click();
25
qiao

Onclickが機能する任意の要素でこれを使用できます。

onclick="window.open('some.htm','_blank');"

12
jojo

@qiaoによるソリューションを使用する場合は、タブが開いたままで、その後のクリックでDOMに要素が追加されるため、追加された子を削除することができます。

// Code by @qiao
var a = document.createElement('a')
a.href = 'http://www.google.com'
a.target = '_blank'
document.body.appendChild(a)
a.click()
// Added code
document.body.removeChild(a)

私はできないので、誰かが彼の投稿にコメントを投稿できるかもしれません。

3
Milos

これを試すことができます:

        <script type="text/javascript">
         function newWindow(url){
                window.open(url);
            }
        </script>

そして、関数を呼び出します

3
bobbiloo

_<a/>_を使用してレポートをトリガーする場合、このアプローチを試すことができます。 window.open()が失敗したときに新しいウィンドウを生成しようとする代わりに、targetを介して新しいウィンドウを開くデフォルトのシナリオを作成します(window.open()が成功した場合はそれを防ぎます)。

HTML

_<a href="http://my/url" target="_blank" id="myLink">Link</a>
_

JS

_var spawn = function (e) {
    try {
        window.open(this.href, "","width=1002,height=700,location=0,menubar=0,scrollbars=1,status=1,resizable=0")
        e.preventDefault(); // Or: return false;
    } catch(e) {
    // Allow the default event handler to take place
    }
}

document.getElementById("myLink").onclick = spawn;
_
2
cheeken
<a href="url" target="_blank"> <input type="button" value="fake button" /> </a>
0
Paulo

2014年以降、<a/>タグ。ただし、セキュリティ上の理由から、clickイベントハンドラーで行う必要があります。そうしないと、ブラウザーがポップアップとしてタグ付けします(他のイベントによっては、安全に開始をトリガーできる場合があります)。

jsFiddle

0
Maël Nison

必要に応じてターゲットセットが設定されたページに非表示のアンカータグを付けて、ポップアウトが必要なときにクリックすることをシミュレートしてみませんか?

アンカータグへのクリックをシミュレートするにはどうすればよいですか

これは、window.openが機能しなかった場合に機能します

0
box86rowh