【问题标题】:TypeError<anonymous> javascript errorTypeError<匿名> javascript错误
【发布时间】:2018-07-10 12:31:16
【问题描述】:

我们使用 sentry.io / ravenjs 来跟踪 JavaScript 错误。我们看到大量错误信息如下:

document.getElementsByClassName.ToString is not a function

    <anonymous> at line 1:33

产生此错误的用户/设备的详细信息非常相似:

browser: Chrome 59.0.3071 (100%)
device: Samsung (100% / different models)
OS: Android (100%  / different versions)

不同的用户正在生成错误,但我们不知道如何模拟或解决它。在任何其他浏览器、设备和操作系统中都不会报告该错误。有没有人对如何解决这个问题有任何想法。

更新:正如所指出的,报告的错误是 ToString 而不是 toString,这更有意义。由于此错误仅发生在特定设备/浏览器上,因此问题似乎不太可能与未定义的属性或函数有关。如果是这种情况,那么该错误也应该出现在其他设备/浏览器上。

在我们自己的 JavaScript 或第 3 方 JavaScript 中找不到文本 ToString。

【问题讨论】:

  • document.getElementsByClassName 是在浏览器中运行的函数,document.getElementsByClassName('class') 之类的。浏览器肯定会报告错误,但开发人员可能已经应用了 try catch 块,因此不会引发错误。
  • 不是ToStringtoString 但是你为什么要getElementsByClassName的字符串我不知道。
  • 我不确定 getElementsByClassName 返回的HTMLCollection 对象是否有toString 方法(如上所述ToString 绝对不是标准方法)
  • 我同意奇怪的是报告的错误是 ToString 而不是 toString。但是,如果这是一个问题,其他浏览器也会出现错误。但事实并非如此。

标签: javascript sentry


【解决方案1】:

【讨论】:

    【解决方案2】:

    当你想通过类名获取一个元素时,你必须使用:

    document.getElementsByClassName('yourClass');
    

    但是,这将返回“document.getElementsByClassName”的功能以及如何使用它,使用哪些参数等。

    document.getElementsByClassName.toString();
    

    如果你想获取你的 html 元素的字符串,你必须使用这个:

    document.getElementsByClassName('yourClass')[0].outerHTML;
    

    【讨论】:

    • 该错误仅发生在装有 Chrome 59.0.3071 的三星移动设备上。如果问题出在故障功能上,该错误是否应该在所有/更多设备上发生?
    • 这不是真正的错误,它更像是一个警告。您可以使用任何与 html 相关的函数,例如“document”并添加任何内容,例如“document.blabla”,它不应该使您的程序崩溃,而应该只说“undefined”。如果你给它添加“()”,它会尝试寻找一个存在的函数并给你一个错误,因为它可能不存在。
    猜你喜欢
    • 2022-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-01
    • 2012-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多