2016-04-15 70 views
1

我有特定于IE浏览器使用此功能的一个问题:如何以编程方式点击IE中的链接?

function downloadFileFromUserControl(filename) { 
    var name = filename.split("/"); 
    var fName = name[name.length - 1]; 
    console.log("IE speaking, I'm just going to take a little nap during this request"); 
    var link = document.createElement('a'); 
    link.download = fName; 
    link.href = filename; 
    link.click(); 
    console.log("Oh, I'm late to the party?? Back to sleep I guess"); 
} 

在Chrome功能完美的作品,我用它来从超链接下载PDF文件。没有错误,它只会发布到控制台。

是否有一些额外的代码IE需要使这项工作?谢谢

+0

究竟是一个什么错?你有错误吗? –

+3

如果需要将IE中的DOM元素插入到DOM中以处理点击事件,或者需要执行像'setTimeout(function(){link.click()}这样的点击操作, 20);'或两者兼而有之。 – jfriend00

+0

它确实运行该功能,但没有错误。它只是发布到控制台 –

回答

0

元素创建后,使用element.appendChild()element.insertBefore()方法将其插入到document

它是如何工作的,请参阅w3c reference

+1

尝试这给我一个脚本层次结构错误。这种情况有点类似于我的:http://stackoverflow.com/questions/23071968/jquery-throws-script5022-hierarchyrequesterror-when-attempted-to-append-a-jquer。这是一个webforms应用程序(这是维护,让我一个人!)。这个JS功能在我的'主'页面上。该函数正从用户控件(.ascx)文件中调用。 –

+0

好吧,您是否尝试过您提及的类似问题中提供的解决方案 –

0

IE不支持“下载”属性只有新版浏览器IE浏览器。缘,你要小心,在旧的浏览器使用新的HTML5功能,大部分时间您需要添加一些“备用”的这种特殊情况下,我会建议:

if (typeof link.download !== typeof undefined && link.download !== false) { 
     var message = document.getElementById('Some <Span> ID Here').innerHTML('Right-click and select "Download Linked File"'); 
    } 
相关问题