Htmlunit ScriptException "консоль" не определена - PullRequest
3 голосов
/ 01 января 2012

Я использую htmlunit 2.9 и при разборе java-скрипта получаю исключение скрипта из-за console в следующем исключении

function debug(o){
  if (console && console.log){
    console.log(o)
  }
};

Stacktrace

EcmaError:
    lineNumber=[168]
    column=[0]
    lineSource=[null]
    name=[ReferenceError]
    sourceName=[script in http://localhost:808/mypage/ll.html from (154, 36) to (301, 14)]
    message=[ReferenceError: "console" is not defined. (script in http://localhost:8080.com/mypage/ll.html from (154, 36) to (301, 14)#168)]
com.gargoylesoftware.htmlunit.ScriptException: ReferenceError: "console" is not defined. (script in http://localhost:8080.com/mypage/ll.html from (154, 36) to (301, 14)#168)
         at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine$HtmlUnitContextAction.run(JavaScriptEngine.java:595)
         at net.sourceforge.htmlunit.corejs.javascript.Context.call(Context.java:537)
         at net.sourceforge.htmlunit.corejs.javascript.ContextFactory.call(ContextFactory.java:538)
         at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine.callFunction(JavaScriptEngine.java:545)
         at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine.callFunction(JavaScriptEngine.java:520)
         at com.gargoylesoftware.htmlunit.html.HtmlPage.executeJavaScriptFunctionIfPossible(HtmlPage.java:896)
         at com.gargoylesoftware.htmlunit.javascript.host.EventListenersContainer.executeEventHandler(EventListenersContainer.java:195)
         at com.gargoylesoftware.htmlunit.javascript.host.EventListenersContainer.executeBubblingListeners(EventListenersContainer.java:214)

если я попробую указанную страницу в Firefox, она будет работать нормально, я попробовал v 3.6, а также 9.0.1.

Я попытался также установить setThrowExceptionOnScriptError(false), чтобы избежать исключения, но двигатель останавливается или нетразобрать javascript после получения ошибки.

Есть ли способ, которым движок javascript может понять console в javascript?

Ответы [ 3 ]

2 голосов
/ 03 августа 2012

https://sourceforge.net/tracker/index.php?func=detail&aid=3518475&group_id=47038&atid=448266 означает, что поддержка console была только что добавлена ​​в HtmlUnit.

2 голосов
/ 01 января 2012

Ваше if условие неправильно структурировано:

if (console && console.log){

Сначала если выдается ошибка, если она не установлена; доступ к console в средах, в которых он не определен, аналогичен доступу к любой неопределенной переменной; это бросит ReferenceError.

Попробуйте:

if( typeof console != "undefined" && console.log ) {

Или:

if(window.console && console.log) {

В Firefox ошибка не возникает, поскольку Firefox реализует API Firebug, как это делают Chrome и Safari. Но по умолчанию Internet Explorer этого не делает, поэтому здесь стоит выполнить надлежащую проверку функциональности, так как он вызовет ReferenceError в браузерах, которые не реализуют этот API.

0 голосов
/ 08 марта 2015

Ваш код использует консольный объект java-скрипта, и он не поддерживается до текущей версии, и обещается, что он будет поддерживаться в следующем выпуске, как сказано здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...