Задать вопрос
@LomasterX

Почему в Chrome при выполнении js мог перестать работать eval?

1. По всей видимости проблема связана с одним из последних обновлений Chrome, потому что до этого код работал вполне исправно несколько лет. В других браузерах (firefox, opera, brave) код работает. Или, наверное, точнее будет сказать, пока работает, потому что насколько знаю движок у всех один и Chrome просто включил изменения первым.

2. Если создать тестовую страницу (test.html ) с приведенным ниже кодом, то все работает нормально, но внутри кода на сайте работать отказывается. Вместо массива, результатом работы eval становится undefined.
<div id="data" onclick="test()">[1,2,3,4]</div>
<script>
	function test() {
		var a=$('#data').html();
		a=eval(a); // В тестовой версии - все хорошо, в рабочей - теперь undefined.
		console.log(a);
	}
</script>


3. На всякий случай опишу для чего использую eval на сайте.
После аякс запроса функции передается массив с html, каждый кусок которого обновляет нужное место на сайте.
$.post('/ajax.php', data, function(data, status) {
    if(data!='') 
        data=eval('('+data+')'); // data - массив вида: {'#id': html+js, '#id2': html+js...}
    else 
        return;
    data_update(data, status);
}
  • Вопрос задан
  • 109 просмотров
Подписаться 1 Средний 2 комментария
Решения вопроса 1
@LomasterX Автор вопроса
Всему виной оказалось расширение антибане Varanida!
Именно оно обновилось и начало блочить eval, а не Chrome.
Вряд ли кто-то столкнется с данной проблемной, но на всякий случай вопрос удалять не буду.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы