【问题标题】:Script tags in body do not get evaluated after previous JavaScript errors在之前的 JavaScript 错误之后,不会评估正文中的脚本标签
【发布时间】:2011-07-10 22:49:02
【问题描述】:

我有一个 HTML 文件,其中在 <script> 标记内定义了一个 JavaScript 方法(比如)postIt()。它的标签前面有两个对不再存在的外部 JavaScript 文件的引用。所有这些<script> 标签都在<body> 内。

我必须将 WebClient.setThrowExceptionOnFailingStatusCode 设置为 false,这样我才能继续处理不存在的 JavaScript 文件。

但是当我尝试调用 page.executeJavascript("postIt()") 时,我得到 Reference not found 错误!

  1. 这是什么原因,我们是否有任何可能的解决方法?
  2. JavaScript 引擎是否在自己的线程中运行?

【问题讨论】:

    标签: java javascript htmlunit


    【解决方案1】:

    好吧,事实证明,我调用了不正确的 JavaScript 代码,这反过来又将我的代码重定向到了 404 页面。但由于我已将 webClient.setThrowExceptionOnFailingStatusCode()webClient.setPrintContentOnFailingStatusCode() 设置为 false,因此 HtmlUnit 并没有通知我。

    因此,对于此类问题,我们需要保持上述标志打开,并删除所有 JavaScript 错误。

    【讨论】:

      【解决方案2】:

      大多数 JavaScript 引擎在遇到解析时/编译时错误时会停止解析/评估代码,就像其他编译器一样。

      这是一项功能,而不是错误。

      解决方法是修复错误。

      【讨论】:

      • 当遇到错误时,该特定 JS 将不再被解析,但不会影响其他脚本的解析。这里前面的两个js都没有找到,所以不应该跳过下一个脚本标签。
      • 嗯,似乎 FF 和 IE 确实处理了它们。 HtmlUnit 不应该这样表现吗?
      • @AppleGrew:我对 HtmlUnit 没有任何了解,但我可以在 htmlunit.sourceforge.net 的首页上读到“它有相当好的 JavaScript 支持”——我猜他们的 javascript 实现没有'与浏览器不完全匹配。
      • 嗯,也许吧。我现在已经删除了有问题的 js 文件。现在仍然找不到 Html 中定义的 postIt() JS 函数。 :(
      猜你喜欢
      • 2019-06-24
      • 2021-07-15
      • 2019-12-22
      • 1970-01-01
      • 2017-12-15
      • 2018-08-29
      • 2012-05-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多