(Sciter) Установить значение переменной из хост-приложения
От: d99  
Дата: 07.07.12 17:53
Оценка:
Здравствуйте, уважаемые!

В скрипте в HTML определена переменная, например

var ttt=0

Как из приложения, которое вызывает Sciter, установить значение этой переменной сразу после загрузки HTML?
И как установить значение, если переменная должна быть массивом?
Если можно, то на Plain C.

Спасибо.
Re: (Sciter) Установить значение переменной из хост-приложения
От: c-smile Канада http://terrainformatica.com
Дата: 07.07.12 21:16
Оценка:
Здравствуйте, d99, Вы писали:

d99>Здравствуйте, уважаемые!


d99>В скрипте в HTML определена переменная, например


d99>
d99>var ttt=0
d99>

d99>Как из приложения, которое вызывает Sciter, установить значение этой переменной сразу после загрузки HTML?
d99>И как установить значение, если переменная должна быть массивом?
d99>Если можно, то на Plain C.

d99>Спасибо.


Ну дык вот же.

// evaluate script in context of current document loaded in the window
    inline json::value eval(HWND hwnd, const wchar_t* script, unsigned length)
    {
      json::value retval;
      BOOL r = SciterEval( hwnd, script, length, &retval );
      assert(r);r;
      return retval;
    }


Где script это что-то типа "ttt=3.1415926;" ну или еще что-то.

Но на самом деле такие вещи делаются через custom view methods.
В скрипте пишем

var ttt = view.initialValueOfTTT();


Этот view.initialValueOfTTT() будет вызван именно в момент инициализации переменной.

А в коде (определнии класса) event_handler который устанавливается на view (HWND) пишем:

 // functions accessible through view.funcname() from script:
  BEGIN_FUNCTION_MAP
    FUNCTION_0("initialValueOfTTT", method_initialValueOfTTT)
    FUNCTION_V("debug", method_debug)
    FUNCTION_1("shellExec", method_shellExec)
  END_FUNCTION_MAP


Ну и сам метод который возвращает массив

 json::value method_initialValueOfTTT()
  {
    json::value arr;
    arr.set_item(0, json::value(12));
    arr.set_item(1, json::value(13));
    ....
    return arr; // returning the array
  }
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.