Uncaught TypeError: Object.defineProperty called on non-object at Function.defineProperty (<anonymous>)

Uncaught TypeError: Object.defineProperty called on non-object
at Function.defineProperty (<anonymous>)

查出来说是href是浏览器保留的安全词,换别的词即可。(但是我看过别人成功对href进行自定义过)

喜欢这个问题 | 分享 | 新建回答

回答

冯纪忠雄

Apr 26, 2024
1 赞

如果你收到了类似于 "Uncaught TypeError: Object.defineProperty called on non-object" 的错误,那可能意味着你试图在一个非对象上调用 Object.defineProperty 方法。这通常发生在尝试在非 DOM 元素上定义属性时。

确保你正在操作的是一个 DOM 元素,例如一个链接元素 <a>,而不是其他类型的对象。另外,请确保你正在操作的元素已经正确获取并且存在于文档中。

关于成功对 href 进行重新定义的情况,我之前提到了有些浏览器可能允许对内置属性进行重新定义,但这并不是所有浏览器都支持的行为。如果你看到其他人成功地这样做了,那可能是因为他们使用了特定的技术、工具或环境,或者是在某些特殊的情况下。这并不是一个通用的、可靠的方法,并且可能会受到浏览器更新的影响。

为了避免这种错误,你可以尝试使用其他属性名称来定义自定义属性,而不是尝试重新定义 href 属性。使用一个不同的名称可能会避免与浏览器原生属性的冲突,并且更有可能实现你想要的功能。

以上是搜索自某个AI助手。但是我认为应该也是有这种实现方法的。可能不是直接 Object.defineProperty去针对href属性,而是更上一层,href只是作为子属性去定义。也许可行。