Импорт LocalStorage в instance

  • Автор темы Автор темы Kostass
  • Дата начала Дата начала

Kostass

Client
Регистрация
20.12.2010
Сообщения
144
Реакции
9
Баллы
18
Буду очень признателен за подсказку, как сделать импорт LocalStorage в instance. Я не сильно силен в C#, и перелопатил весь форум, рабочих примеров не нашел.
На скрине наглядно обвел что что нужно заменить на свои данные!
Огромное спасибо за помощь.
2020-04-15_213448.png
 
Принципиально C#?

Можно из экшена "Свой JavaScript код":
JavaScript:
Развернуть Свернуть Копировать
localStorage.setItem("persist:root", "some important data");
В настройках экшена поставить выполнять на текущей странице и не забыть указать переменную для возвращаемого значения (даже если ничего не возвращается. В противном случае экшен будет возвращать ошибку).

Если же С# обязателен, то как-то можно JavaScript выполнять и из C#, но как это делается я сейчас не скажу. Это надо либо лезть в документацию, либо гуглить по форуму, где-то эта инфа была.

UPD (17.01.2021):
Есть C# методы для сохранения и загрузки localsStorage - LoadLocalStorage и SaveLocalStorage (с помощью данных методов можно сохранить весь localsStorage, а не его отдельный элемент).

Так же подобные методы существуют для IndexedDB и SuperCookie. Подробности по ссылке - клик
 
Последнее редактирование:
  • Спасибо
Реакции: Kostass
Чето не получается, нет рабочего примера ? С# не принципиально.
 
В общем разобрался, не могу правильно оформить просто:

JavaScript:
Развернуть Свернуть Копировать
localStorage.setItem("persist:root", "{"preferences":"{\"language\":\"en\",\"culture\":\"en-GB\",\"theme\":\"default\",\"Displayed\":true,\"rehydrated\":true}"}");

2020-04-16_013406.png



Помогите плизз разобраться!
 
Необходимо правильно экранировать кавычки внутри передаваемой строки. Об этом можно почитать здесь либо погуглить. Можно воспользоваться https://tools.icoder.uz/json-escape-unescape.php (берём нашу строку, сначала делаем "Разэкранировать", а потом уже "Экранировать".)
В итоге из
{"preferences":"{\"language\":\"en\",\"culture\":\"en-GB\",\"theme\":\"default\",\"Displayed\":true,\"rehydrated\":true}"}
должно получится
{\"preferences\":\"{\"language\":\"en\",\"culture\":\"en-GB\",\"theme\":\"default\",\"Displayed\":true,\"rehydrated\":true}\"}
И уже эту строку используем в ЗП.
 
  • Спасибо
Реакции: dtk77 и Kostass
Необходимо правильно экранировать кавычки внутри передаваемой строки. Об этом можно почитать здесь либо погуглить. Можно воспользоваться https://tools.icoder.uz/json-escape-unescape.php (берём нашу строку, сначала делаем "Разэкранировать", а потом уже "Экранировать".)

Спасибо большое за подсказки, вроде как разобрался. Вот так работает:
JavaScript:
Развернуть Свернуть Копировать
localStorage.setItem('formData',    
  JSON.stringify(context.state.formData));
 
  • Спасибо
Реакции: G2Dolphin
В моем случае заработало такое решение:
Присваиваем переменной localStorage нужный текст без экранирования, к примеру:
JSON:
Развернуть Свернуть Копировать
{"https://google.com":{"active_session":"123"}}
далее загружаем в профиль этим кодом:
C#:
Развернуть Свернуть Копировать
instance.LoadLocalStorage(Encoding.UTF8.GetBytes(project.Variables["localStorage"].Value));
 

Кто просматривает тему: (Всего: 0, Пользователи: 0, Гости: 0)