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);
}