2016-12-24 2 views
0

Я хочу прочитать значение Javascript со страницы, но как?Как я могу прочитать переменную Javascript с Awesomium? C++

std::string jscript("[appdata]"); 
    JSValue value = view_->web_view()->ExecuteJavascriptWithResult(WSLit(jscript.c_str()), WSLit("")); 
    JSArray& arr = value.ToArray(); 
    std::string appdata = arr[0].ToString; 

Когда я пытаюсь использовать это я получаю Awesomium :: JSValue :: ToString: нестандартный синтаксис; использование «&», чтобы создать указатель на член

ТБМ Я понятия не имею, где поставить &

ответ

0

Моего C++ довольно ржавый, но вы не должны добавить круглые скобки в конце?

std::string appdata = arr[0].ToString(); 

Как можно заметить, код, кажется, пытается получить указатель на функцию член ToString и присвоить его STD :: строковую переменную.

+0

Ну, я попытался это и вот результат: ** Awesomium :: WebString 'до' станд :: basic_string <голец, СТД :: char_traits , станд :: распределителей > не подходит user- определенное преобразование из «Awesomium :: WebString» в «std :: string» существует ** – bugraarslan

+0

Итак, мое наблюдение было правильным: вы назначали указатель функции вместо значения/объекта. :) –

0

Ну, вот ответ для будущих wonderers:

JSValue MyValue = view_->web_view()->ExecuteJavascriptWithResult(WSLit("appdata"), WSLit("")).ToString(); 
    WebString asd(MyValue.ToString()); 
    std::string appdata = ToString(asd); 
0

Try изменения:

std::string appdata = arr[0].ToString; 

в

Awesomium::WebString appdata = arr[0].ToString(); 

Как Майк Климентьев сказал, вы присваивающей метод ToString для переменной appdata. Когда вы добавляете круглые скобки, он вызывает вызов функции, а не прямое назначение функции переменной.

Кроме того, при добавлении круглых скобок сообщение об ошибке компилятора сообщает вам, что он не может преобразовать тип «Awesomium :: WebString», чтобы ввести «std :: string». В самом начале строки у вас есть std::string appdata Это объявляет переменную appdata типа std::string. Однако метод ToString() возвращает тип Awesomium::WebString, для которого не существует преобразование к типу std::string

EDIT: @bugraarslan Исходя из опыта, я бы опасаться вашим обходной путь. Нет простого преобразования между двумя типами, потому что они не писали одно. Обычно это означает, что вы можете использовать тип Awesomium::WebString или сражаться с библиотекой, используя знакомый тип, а именно: std::string. Библиотеки не утомляют в своем упрямстве, но делают, как вам угодно

У меня недостаточно репутации для комментариев. Поэтому мне пришлось изменить свой ответ.

Смежные вопросы