как выполнить в контексте браузера код и сохранить его вывод?

Moved Поддержка
  • в уроках даны простешие примеры типа X.indexOf(Y). Такое работает, и, действительно, сохраняется в переменную. А вот как мне выполнить большой многострочный код, и какую конструкцию использовать, чтобы "вернуть" результат из него в переменную BAS?

  • короче пока что workaround такой: большой код пишет свой результат в новый элемент на странице, а следующим действием BAS я пишу value этого элемента в переменную BAS. но наверняка же есть менее кривое решение?

  • @CblP Используйте действие "яваскрипт"

    0_1540915603556_f10f5b56-57b8-4e3f-bdde-84dc93430494-изображение.png

  • я именно о нем и говорю. скажем, у меня большой кусок кода, который чтото делает. как мне в конце вернуть результат в БАС? однострочники типа X.length()+3 работают, но я хочу выполнить много кода, и вот тут непонятно как действовать.

  • @CblP

    у меня большой кусок кода, который чтото делает. как мне в конце вернуть результат в БАС?

    Мастера конспирологии.. Любой js код можно выполнить в строке. Но если переводить накладно, можете использовать действие шаблон, заранее заменив фигурные скобки:

    { - {
    } - }

    И выполнить в яваскрипт через eval()

    eval([[TEMPLATE_RESULT]])
    

    Подробнее разобрал в соседней теме

  • это всё не совсем то. я хотел узнать могу ли я явно вернуть значение, которое переменной присвоится. если да, то как.

  • @CblP

    могу ли я явно вернуть значение, которое переменной присвоится. если да, то как.

    К сожалению вернуть значение можно только через результат, то есть код

    var q = "hi";[[TEST]] = q 
    

    не вернёт значение "hi" в переменную [[TEST]] из действия "яваскрипт".

  • @cblp said in как выполнить в контексте браузера код и сохранить его вывод?:

    в уроках даны простешие примеры типа X.indexOf(Y). Такое работает, и, действительно, сохраняется в переменную. А вот как мне выполнить большой многострочный код, и какую конструкцию использовать, чтобы "вернуть" результат из него в переменную BAS?

    Если я правильно понял вашу задачу, то я ее решаю так
    В экшине "Выполнить код" примерно такая конструкция

    page().script("foo(); " + foo.toString())!
    [[SAVED_SCRIPT_RESULT]] = JSON.parse(_result());
    
    function foo(){
        // Any code
        
        return JSON.stringify(outResult);
    }