Math.log10 не определен/доступен в PhantomJS

TypeError: undefined is not a function (evaluating 'Math.log10(10)')

Как решить эту проблему, если я не могу изменить исходный код проекта?

Я могу изменить код скрипта PhantomJS.

На этот вопрос можно частично ответить этим вопросом. Разница в том, как правильно внедрить решение в ваш код.


person rodvlopes    schedule 22.04.2015    source источник
comment
В частности, проверьте комментарий о полифилле   -  person CodingIntrigue    schedule 22.04.2015
comment
решение polyfill хорошее, но оно не полное. Принятый ответ дает важную информацию, от которой зависит успех: Это делается путем регистрации в обработчике событий page.onInitialized:   -  person rodvlopes    schedule 22.04.2015


Ответы (1)


Если страница нуждается в этой функции, вы можете легко добавить ее. Используйте, например, полифилл, предоставленный MDN.

Полифил должен быть нанесен как можно раньше. Это делается путем регистрации в обработчике событий page.onInitialized:

page.onInitialized = function(){
    page.evaluate(function(){
        Math.log10 = Math.log10 || function(x) {
            return Math.log(x) / Math.LN10;
        };
    });
};

Это работает во всех версиях PhantomJS.

person Artjom B.    schedule 22.04.2015