gpt4 book ai didi

javascript - 如何模拟链接的下载属性?

转载 作者:行者123 更新时间:2023-11-28 06:24:46 26 4
gpt4 key购买 nike

我正在努力将应用程序从 Angular 1.2 更新到 Angular 1.4,并在过程中破坏了一些 karma 测试。大多数都是简单的修复,但是有一些我无法工作。测试依赖于检查是否定义了下载属性来确定如何下载所需的文件。升级之前,测试只需设置elem.download即可。升级后好像无法设置下载。

以下是我如何设置测试元素:

var link = document.createElement('a');
link.download = undefined;

然后在代码本身中,它非常简单

if(link.download !== undefined) {
//do stuff (this test works)
} else {
//do other stuff (this test doesn't work)
}

当我尝试将 link.download 设置为未定义时,它仍然进入第一个分支。如果我尝试传入一个空对象,则会出错,因为各种属性未定义,即使代码似乎没有查看这些属性。

我还尝试设置 link.download = null 并更改 if 语句以使用 typeof

TL;DR如何将下载属性设置为未定义?

这是一个simple Plunker与这个问题。

最佳答案

设置为 download 的值将转换为字符串值,因此您的 undefined 将转换为 "undefined" 这就是为什么它总是通过 !== 比较。

编辑

根据您的评论,您希望对下载进行功能检测。因此,要做到这一点,请使用

`download` in createElement('a')
//or
HTMLAnchorElement.prototype.hasOwnProperty('download')

然后,如果您想强制进行不存在的测试,您只需从原型(prototype)中删除 download

delete HTMLAnchorElement.prototype.download;

关于javascript - 如何模拟链接的下载属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35228256/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com