ボタンをクリックするだけで複数のレポートを開きたい ASP.NET サイトを管理しています (できれば、それぞれのタブで)。レポートは今のところ URL として保存されているので、それらの URL で複数のウィンドウを開くだけで済みます。
JavaScript(つまりwindow.open)を使用してそうしようとしています。これが私がやっていることの例です(実際のURLは削除しましたが):
<html>
<body>
<button onclick="openLinks();return false;">Open both links</button>
<script type="text/javascript">
function openLinks(){
var FirstWindow = window.open('');
FirstWindow.location = 'https://myssrsReportURL/rs:Format=EXCEL';
window.open('https://myssrsReportURL/rs:Format=EXCEL');
}
</script>
</body>
</html>
上記の js メソッドの最初の 2 行には、URL を新しいウィンドウではなく新しいタブで開くように強制するという利点があります。ただし、上記の例では、空白のウィンドウを開いた後に場所を設定すると、IE が「このサイトのダウンロードをブロックしました」というエラー メッセージが表示されます。
2 番目の URL が (新しいウィンドウで) 問題なく開きます (ファイルのダウンロード プロンプトが表示されます)。
同じ URL を開こうとすると、2 番目の方法では機能する (ファイルのダウンロード プロンプトが表示される) のに、最初の方法では機能しない (IE セキュリティ警告が表示される) のはなぜですか? JavaScript(またはjQuery)を使用してこれを回避する方法はありますか?
顧客は、ボタンを 1 回クリックしてこれらすべてのレポートを開くことを要求しています。レポートは特定の URL (新しいタブで開こうとしている URL) への取得要求時に SSRS によって生成されるため、1 つの要求ですべてを圧縮することはできません。
問題は「複数のタブを開く方法」ではなく、 window.open('') と window.open('url') の間に動作の不一致が存在する理由です。