Получить значения параметров функции JavaScript из Java? - PullRequest
0 голосов
/ 23 мая 2018

Для моего Java-приложения мне нужно иметь возможность, учитывая строку JavaScript, определять фактические аргументы, передаваемые в вызов функции.

Например, учитывая эту строку JavaScript:

const url = "http://foo.bar?q=" + location.href
const method = "GET"
const isAjax = true

let xmlhttp = new XMLHttpRequest();
xmlhttp.open(method, url, isAjax);

Я хотел бы оценить этот JavaScript, чтобы получить это:

xmlhttp.open("GET", "http://foo.bar?q=someurl", true);

Прямо сейчас яиспользование регулярного выражения для поиска интересующих меня частей JavaScript (в данном примере это будет метод open объекта XMLHttpRequest), но мне нужно иметь возможность вычислять фактические значения аргументов, передаваемых функции, если они не жестко закодированы со стороны вызова.

Я искал здесь, но то, что я обнаружил, было больше связано с фактическим выполнением кода JavaScript, а не с просмотром значений его выражений (больше похоже на его оценку, получениеAST или что-то в этом роде.)

Есть идеи, как этого добиться?

1 Ответ

0 голосов
/ 23 мая 2018

Моя идея - добавить библиотеку javascript mocking, например sinon , и выполнить этот javascript.Особенно взгляните на поддельный XMLHttpRequest

Код Javascript понравится:

let sinon = require('sinon');
let xhr = sinon.useFakeXMLHttpRequest();
let requests = [];
xhr.onCreate = function (xhr) {
        requests.push(xhr);
    }
const url = "http://foo.bar?q=" + location.href
const method = "GET"
const isAjax = true

let xmlhttp = new XMLHttpRequest();
xmlhttp.open(method, url, isAjax);

console.log(requests[0].url)
...