2011-01-06 84 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

相关问题