2011-01-06 6 views
0

location.replace(strURL)が他のすべての主要なブラウザで動作するように見えるので、質問はIE7のみです。 私はいくつかのanalytics jsを実行し、ユーザーがダウンロードしたいリソース(通常はdocまたはpdf)の場所にリダイレクトしようとします。 ユーザーがjsコードを含むページを開きます。 ダウンロードがbroswerは、リソースURLで歴史の中で、現在のページのエントリを置き換えることにより、以下のコードを使用してresurouce URLをロードする必要があります追跡された後:ブラウザの履歴に影響を与えずに同じbroswerウィンドウで新しいページを開く

if (IE) { 
      window.open(strURL,"_self", true); //doesn't work 
      //window.open(strURL,"_self",undefined, true); //doesn't work 
      return; 
     } 

このコードは、リダイレクトページの履歴にエントリを作成します。 同じページでiframeを使用しようとしましたが、ファイルが* .docの場合はIEがセキュリティ警告を表示します

アイデアはありますか?

+0

あなたは「ユーザーが開く...」で私を失ってしまいました。 – DanMan

答えて

0

IE7でこれを回避する方法があるかどうかはわかりません。多分別のアプローチが可能でしょう。リダイレクトする前にアナリティクスjsを現在のページに挿入すると、別のページをすべて読み込む必要がなくなります。この方法では、新しいスクリプトタグを作成し、それをhead要素に挿入します。スクリプトはロード時に実行され、分析を行い、最後のステップとしてダウンロード用のリダイレクトをトリガーします(たとえば)。

function redirectWithAnalytics() { 
    var s = document.createElement('script'); 
    s.src = 'path/to/analytics.js'; 
    s.type = 'text/javascript'; 
    document.getElementsByTagName('HEAD')[0].appendChild(s); 
} 
+0

残念ながら、これは私の場合は不可能です。リクエストがサイトイメージを含むさまざまなファイルのリクエストを処理する共通のアセットハンドラを経由するため、データベースにアクセスするまでユーザーがダウンロードリンクをクリックしたかどうかはわかりません。トラッキングスクリプトを挿入するかどうかを決めるには、別のサーバーへのトリップが必要です。とにかく、私はwindow.openメソッドで何か間違っています。私は同じまたは類似の問題を持つ他の誰かを見つけることができないので、私は何か間違っていると思うだろうか? –

+0

スクリプトのsrcをデータベースチェックを行い、必要に応じて解析コードを返すようにするサーバーサイドスクリプトを作成しないでください。空の文字列や他の関数の呼び出しを返して、有効なリンク? –

関連する問題