Я обнаружил, что почти все не алфавитно-цифровые символы должны быть заключены в кавычки querySelector()
и querySelectorAll()
.Из моего тестирования:
for( var i=32; i<127; i++ ) {
var ch = String.fromCharCode(i);
try{ document.querySelector("[a"+ch+"b]") }
catch(e) { console.log( i + ' = ' + ch ); }
};
Только "-" и "_" сделали не необходимо экранировать.Это требует специальной функции типа replace
для аргументов querySelector
, чтобы убедиться, что они отфильтрованы правильно.Другие функции (например, setAttribute
, getAttribute
) не нуждаются в экранировании.
Я не могу найти документацию для проверки тестирования.Например, как насчет символов Юникода в имени атрибута?