【问题标题】:How to programmatically click a link in IE?如何以编程方式单击 IE 中的链接?
【发布时间】:2016-08-07 16:21:30
【问题描述】:

我在使用此功能时遇到了特定于 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 是否需要一些额外的代码才能完成这项工作?谢谢

【问题讨论】:

  • 到底出了什么问题?你有错误吗?
  • 如果需要将 IE 中的 DOM 元素插入到 DOM 中以处理点击事件,或者如果您需要像 setTimeout(function() {link.click()}, 20); 那样进行点击,或者两者兼而有之,我不会感到惊讶。
  • 它确实运行了该功能,但没有错误。它除了发布到控制台之外什么都不做

标签: javascript asp.net internet-explorer


【解决方案1】:

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

就是这样,参考w3c reference

【讨论】:

  • 尝试这样做会给我一个脚本层次结构错误。这个案例有点像我的:stackoverflow.com/questions/23071968/…。这是一个网络表单应用程序(它正在维护,别管我!)。这个 JS 函数在我的“主”页面上。正在从用户控件 (.ascx) 文件调用该函数。
  • 好的,您是否尝试过您提到的类似问题中提供的解决方案
【解决方案2】:

IE 不支持“下载”属性,只有较新的浏览器,即。 Edge,你需要小心在旧浏览器中使用新的 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"');
    }

【讨论】:

    猜你喜欢
    • 2010-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-15
    • 2015-10-19
    • 2010-10-16
    • 2012-02-23
    • 1970-01-01
    相关资源
    最近更新 更多