This is a mobile optimized page that loads fast, if you want to load the real page, click this text.

Проблема execute Передача данных

TTox421

Участник портала
23 Май 2021
65
19
65
Подскажите почему я не могу передать данные с клиентской стороны на Frontend

Я пробовал разные варианты и все равно у меня не выводит текст при ошибке. При этом я проверил функция на стороне клиента сто процентов получает сообщение.


Код:
mp.events.add('showAuthError', (errorMessage) => {
  myBrowser.execute(`showError(errorMessage)`);
});

////////////////////////////////////////////////////////////

function showError(message) {
  document.getElementById('Error').style.display = "block";
  document.getElementById('Error').innerHTML = `${message}`;
}

Код:
mp.events.add('showAuthError', (errorMessage) => {
  myBrowser.execute(`showError(${errorMessage})`);
});

//////////////////////////////////////////////////////////////
function showError(message) {
  document.getElementById('Error').style.display = "block";
  document.getElementById('Error').innerHTML = `${message}`;
}

Код:
mp.events.add('showAuthError', (errorMessage) => {
  myBrowser.execute(`showError(${errorMessage})`);
});

/////////////////////////////////////////////////////////////

function showError(message) {
  document.getElementById('Error').style.display = "block";
  document.getElementById('Error').innerHTML = message;
}

Код:
mp.events.add('showAuthError', (errorMessage) => {
  myBrowser.execute('showError(`${errorMessage}`)');
});

///////////////////////////////////////////////////////////

function showError(message) {
  document.getElementById('Error').style.display = "block";
  document.getElementById('Error').innerHTML = message;
}
 

TTox421

Участник портала
23 Май 2021
65
19
65
Нашел решение -
Код:
myBrowser.execute(`showError('${errorMessage}')`);
 

kurlikmurlik

Участник портала
18 Сен 2021
91
12
53
Нашел решение -
Код:
myBrowser.execute(`showError('${errorMessage}')`);
Ты нашёл решение методом тыка или понял причину ошибки очевидной?

P.S.
В 1.1 есть возможность регистрировать в CEF'е эвенты через mp.events.add и потом на клиенте, через Browser.call можно тригерить эвенты в CEF'е.
 

kurlikmurlik

Участник портала
18 Сен 2021
91
12
53
В рейдже весело передавать объекты в строке, а потом парсить их, мем
Да, так работает передача данных. Не поверишь, передавать данные в JSON формате нельзя. Ты можешь без проблем сделать обёртку и сам десерилизовать свои объекты. МЕМ человек не шарит за программирование и выписывает что-то про чужой продукт, сам не понимая что выписывает МЕМ

"high coder" выдают всем подряд или тут, весь внутренний грейд форума, это до интерна?
 
Реакции: evgee.kzmn

TTox421

Участник портала
23 Май 2021
65
19
65
Нет я нашел решение в интернете с объяснением
 

TTox421

Участник портала
23 Май 2021
65
19
65
Имеешь ввиду на прямую в JS файле отлавливать эвенты с клиентской стороны?
 

TTox421

Участник портала
23 Май 2021
65
19
65
Вроде как понял, надо будет попробовать.
 

TTox421

Участник портала
23 Май 2021
65
19
65
Так я имел ввиду, что я нашел решение где объяснено почему именно такой регистр записи. Я уже понял почему код не работал.
 

Moretti

Участник портала
19 Янв 2021
82
24
92
Начнем с того, что JSON ты и не передашь, ведь это не тип данных даже. А то что можно создавать ивенты, я знаю, но сейчас шла речь об execute, да и пишу я по большей части на альте.
 
Реакции: IronPython

kurlikmurlik

Участник портала
18 Сен 2021
91
12
53
"Начнем с того, что JSON ты и не передашь, ведь это не тип данных даже." Где я сказал что JSON это тип данных?
"но сейчас шла речь об execute" Раз идёт речь об execute, зачем ты вообще пишешь "В рейдже весело передавать объекты в строке, а потом парсить их, мем". Типо к чему вообще это.
"да и пишу я по большей части на альте." а ну тогда ясно.
 

Moretti

Участник портала
19 Янв 2021
82
24
92
1 - "Не поверишь, передавать данные в JSON формате нельзя. Ты можешь без проблем сделать обёртку и сам десерилизовать свои объекты."
2 - К тому что execute не может передать параметры в функцию нормально.
 

XDeveluxe

⚡️BackEnd Developer
Команда форума
Moderator
High developer
BackEnd developer
30 Авг 2021
2,766
1,581
211
28
Почему execute не может передавать параметры в функцию нормально? Как и в любом другом месте? ' требуются в данном случае по той причине, что это текст, текст (как и json, ведь он является текстом) невозможно передать просто переменной. Цифры ты можешь передавать browser.execute("testfunc(4)");, но текст только через ', очевидно же, не?
 

Moretti

Участник портала
19 Янв 2021
82
24
92
Очевидно конечно, но все же метод не лучший. Например, можно было бы принимать параметры после названия функции, execute(name, "string", 4, {data: "name"})
 

Moretti

Участник портала
19 Янв 2021
82
24
92
Все же ивенты стали лучшим решением для рейджа.
 

kurlikmurlik

Участник портала
18 Сен 2021
91
12
53
Очевидно ты не понимаешь что пишешь. Мне даже в падлу тебе аргументировать. Ты отвечаешь полный бред, потому что мало что понимаешь.

Попроси забрать "high coder", ты максимум интерн спустя пару месяцев, который скоро мб джуном станет.
 

Moretti

Участник портала
19 Янв 2021
82
24
92

Что ты вообще несешь? Я привел пример, как рейдж мог бы сделать изначально, я знаю что делает функция execute, но реализация с ходу херня, со стороны рейджа.
 

XDeveluxe

⚡️BackEnd Developer
Команда форума
Moderator
High developer
BackEnd developer
30 Авг 2021
2,766
1,581
211
28
Честно говоря, вообще не вижу смысла в этом. Зачем, если текущий execute работает прекрасно для всех нужных случаев?
В него можно передавать всё, что ты только можешь хотеть, и это удобно уже сейчас, зачем это менять на что-то более сложное, что не имеет смысла, если сейчас можно сделать всё то же самое с тем же успехом?

Как .execute может работать:
JavaScript:
browser.execute("func('test')");
browser.execute("var testvar = \"test\"; func(testvar)");
browser.execute("var testvar = 4; func(testvar)");
browser.execute("func(4)");

Как .execute НЕ может работать:
JavaScript:
browser.execute("func(testvar)");
Потому что 'testvar' в данном случае не находится в зоне досягаемости для того, что происходит внутри (внутри - это "func(testvar)"). Чтобы передать что-то как текст - нужно использовать ', а если это переменная - она должна быть оговорена внутри, как видно выше.
 
Последнее редактирование:

Moretti

Участник портала
19 Янв 2021
82
24
92
Кстати, нужно вот что проверить, если внутри execute сделать переменную с парсингом объекта и передать его