2011-01-06 104 views
0

問題僅針對IE7,因爲location.replace(strURL)似乎在所有其他主流瀏覽器中都可以使用文件。 我嘗試執行一些分析js,然後將用戶重定向到他們想要下載的資源(通常是doc或pdf)的位置。 用戶打開一個包含js代碼的頁面。 下載後的跟蹤broswer應與資源網址替換史上當前頁條目使用下面的代碼加載resurouce網址:在不影響瀏覽器歷史的情況下在同一瀏覽器窗口中打開新頁面

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

此代碼創建的重定向頁面的歷史記錄條目。 我曾嘗試在同一頁上使用iframe,但IE會彈出一個安全警告,如果該文件是* .doc

任何想法?

+0

您在「用戶打開...」時丟失了我。 – DanMan 2011-01-06 14:17:20

回答

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方法。我無法找到任何有相同或相似問題的人,這讓我覺得我可能做錯了什麼? – 2011-01-06 13:48:08

+0

爲什麼不讓腳本的src成爲執行數據庫檢查的服務器端腳本,並在適當的情況下讓腳本返回分析代碼,否則返回一個空字符串或調用某個其他函數來通知用戶他們沒有單擊有效的鏈接? – 2011-01-07 13:31:19

相關問題