Как получить переменную после innerHTML
Есть форма на странице, которая обновляется после ajax dataType:html, с помощью element.innerHTML = res;
в res есть
<script>
var cd = {"dates":{"min":"2020,4,18","max":"2020,4,25"}};
</script>
Возможно ли получить доступ к этой переменной? console.log(cd); - ничего не дает console.log(window); - ее нет
Или как передать объект?
Спасибо!
Ответы (1 шт):
Вы уверены, что код вообще выполняется? По умолчанию, script теги, добавленные через innerHTML выполняться не будут, так как это не безопасно.
Если же код выполняется, то происходит следующее. Переменная cd инициализируется, но нигде не используется. Поэтому логично, что вы не видите её в window.
Чтобы получить значение, либо измените код:
window.cd = ...
Либо, если код не ваш, то можно добавить дополнительный блок script со следующим содержанием:
window.cd = cd;
Как объяснил ниже Stepan Kasyanenko, переменная, инициализированая в одном блоке будет читаться и в последующих блоках.
Можете ещё анализировать само значение res. К примеру, если вы знаете, что структура кода не поменяется, то можно пропустить первые девять символов (var cd =), убрать последний (точка с запятой), и дальше использовать JSON.parse чтобы получить сам объект.
Учтите, что этот вариант очень хрупкий. Если код поменяется, то ваш перестанет работать. Поэтому лучше обратиться к тому, кто написал код, и попросить внести изменения, к примеру создав API который будет давать готовый результат в виде JSON ресурса.