2011-06-08 1 views
0

を使用して、私は私の左側のナビゲーションでこのリンクを持っている場合、それは新しいタブでそれを行うにする方法:JavaScriptを渡されたパラメータに基づいてリンクを開く ダッシュボードリンクは別のページを開くjavascriptを実行しています。ユーザーはミドルクリックや右クリックメニュー

を。

すべてがうまくいきますが、タブでリンクを開くブラウザ機能を使用したいと思っています(ユーザーが中クリックを使用している場合、または右クリックメニューから[新しいタグでリンクを開く]を選択した場合)。しかし、これはjavascriptコードで処理されるリンクでは機能しません。

これはブラウザのデフォルトの動作ではない多くの理由があります(例:javascript関数はいくつかのバリデーションを行い、ページに残ります...ブラウザはjsが何をするか、/dialogはそのアクションから生じるので、中間クリックの結果として新しいタグを開くのは意味がありません...)。しかし、うまくいけば、デフォルトの動作の回避策があります。

どのようにこれを行うことができますか?

乾杯、 Stef。

答えて

1

JavaScriptリンクは、呼び出されたページのコンテキストで実行されます。新しいタブ/ウィンドウでリンクを開くと、javascriptコードは新しいウィンドウ、つまり空になり、ほとんどの場合失敗します。

ブラウザリンクが含まれているページを複製し、複製されたページのコンテキストでjavascriptコードを実行することで、求めている機能を追加しようとします。しかし、これはおそらくいくつかの重要なサイトを破る可能性があります(たとえば、オンラインバンキングサイトがjavascriptで動作することを想像してください。新しいタブ/ウィンドウでリンクを開くと、元のウィンドウを複製するとトランザクションが重複する可能性があります)。

+0

ありがとうVlad。私はその例に完全に同意しない。ページを複製するとトランザクションが重複する場合は、基本的に同じページ(JavaScriptではない)のリンクをクリックすると同じことが起こります...同じセッションを使用して同じデータを2回コミットするとサーバー側のチェックがない場合(セッションのクローン作成や目的を達成した可能性のあるものの無効化、ユーザーへの注文の取得など) – Stef

+0

@Stef:私は次の例を意味しました:トランザクションをコミットしようとしているページにいるとします。今、ページが複製され、新しいウィンドウでトランザクションを終了し、そのウィンドウを閉じます。コミットされていないトランザクションがある状態で元のウィンドウが開いているので、同じトランザクションをもう一度コミットすることになります。しかし、より良い例が必要です。 – Vlad

+0

@Vlad:私は同じシナリオについて話しています。たとえば、現在のページがbla.com/checkoutで、そのページにbla.com/booksというリンクがあるなど、javascriptの背後にあるリンクをクリックしないで、同じサイトへのリンクをクリックするとします。これで2ページ(書籍とチェックアウトは同じhttpセッションで開かれました)になりました。あなたの「本」ページからチェックアウトをクリックするとチェックアウトページに進み、「完了」をクリックします。これにより、チェックアウト処理が終了します。しかし、チェックアウトページにはまだ別のウィンドウが開いています。あなたがそれに行き、「終了」をクリックすると、あなたは困っています。 – Stef

関連する問題