1

Web クライアントへのリンクに使用するアプリケーションの外部クライアント用の jsp を作成しました。リンクがウィンドウを開くときに名前が付けられ、そのクライアントからの他のリンクが同じウィンドウで開くように、URL で自分がどのクライアントであるかを指定できます。URL の例を次に示します。

mysite.com/redirect.jsp?fromClient=mine&page=awesome

問題は、たとえばメール ダイジェストからこのリンクをクリックすると、目的のページを開くためredirect.jspに使用window.open()するページが開くことです。上記のリンクから、開くページは次のようになります。

mysite.com/index.jsp?page=awesome

そのため、実際には 1 つだけが必要な場合でも、2 つのページを開いています。また、最初のページ (リンク) を開くために JavaScript を使用していないためwindow.close()、それを閉じることはできません。window.open('','_parent','')andを使用して回避しようとしましwindow.open('','_self','')たが、どちらも機能しません。

jsp ページから 2 番目のウィンドウを開くよりも優れたリダイレクト方法が必要であることはわかっていますが、その優れた方法が何であるかはわかりません。考え?

編集
主な目標は、外部クライアントのユーザーがそのクライアントのリンクをクリックして、すべてのリンクからブラウザーの同じウィンドウ/タブに移動できるようにすることです。window.openリンクを解析してクライアント名を取得し、それを関数で提供できるため、現在使用していwindow.openます。

EDIT 2
これらの質問では、私はいつも漠然としすぎてしまいます。OK、セットアップは次のとおりです。

電子メール ダイジェストには、次のようなリンクが含まれています。

mysite.com/redirect.jsp?fromClient=emailDigest&pageNum=4

現在、そのリンクがクリックされると、ブラウザーが開き (当然)、redirect.jspページはそのリンクを解析してクライアント名 (この場合はemailDigest ) を取得します。次に、 を呼び出しますwindow.open('mysite.com/index.jsp?pageNum=4','emailDigest')。これにより、その名前emailDigestのウィンドウ/タブが既に存在しない限り、その名前で新しいウィンドウが作成されます。その場合、そのウィンドウの URL が新しいウィンドウで更新されるだけです。

元のウィンドウ(アドレスのあるウィンドウ)を閉じることができるようにするか、redirect.jspその最初のウィンドウをまったく開く必要がないようにしたい。


: これを実行できるようにしたいと考えているさまざまなクライアントが多数いるため、HTML を使用してリンクを作成することを保証できないため、target属性は答えではありません。

4

4 に答える 4

0

上記のヘイナーが言っているように、なぜあなたは窓を開けて、どちらも開けないのですか?

<!-- content contains the refresh delay in seconds and the target url -->
<meta http-equiv="Refresh" content="1; URL="http://mysite.com/index.jsp?page=awesome">

または、javascript を使用して同じことを行います。

window.location.href = "http://mysite.com/index.jsp?page=awesome";

どちらも問題なく動作し、ウィンドウが 1 つ開いたままになります。

名前付きウィンドウを取得するには、ターゲット リンクを使用します。

<a href="mysite.com/redirect.jsp?fromClient=mine&page=awesome" target="mine">Mysite.com</a>

これにより、開いているウィンドウの name プロパティが自動的に設定されます。

于 2012-07-17T21:25:46.863 に答える
0

window.locationの代わりに を探していると思いますwindow.open

于 2012-07-17T21:23:21.557 に答える
0

window.location.replace("http://mysite.com/index.jsp?page=awesome"); を使用してください。

理由 :

replace(url): 現在のドキュメントを指定された URL のドキュメントに置き換えます。assign() メソッドとの違いは、replace() を使用した後、現在のページがセッション履歴に保存されないことです。つまり、ユーザーは [戻る] ボタンを使用してそのページに移動できなくなります。

于 2012-07-17T21:32:09.123 に答える