Как зарегистрировать объект?

EDIT: Это было написано в 2014 году. Вероятно, вы больше не заботитесь о IE8 и можете забыть об использовании innerText. Просто используйте textContent и делайте с ним, hooray.

Если вы тот, кто снабжает текст, и никакая часть текста не предоставляется пользователем (или другим источником, который вы не контролируете ), тогда установка innerHTML может быть приемлемой:

// * Fine for hardcoded text strings like this one or strings you otherwise 
//   control.
// * Not OK for user-supplied input or strings you don't control unless
//   you know what you are doing and have sanitized the string first.
document.getElementById('myspan').innerHTML = 'newtext';

Однако, как отмечают другие, если вы не являетесь источником какой-либо части текстовой строки, использование innerHTML может подвергать вас контенту инъекции, такие как XSS, если вы не будете осторожны, чтобы правильно дезинфицировать текст.

Если вы используете ввод от пользователя, вот один из способов сделать это безопасно, одновременно поддерживая совместимость между браузерами: / g3]

var span = document.getElementById('myspan');
span.innerText = span.textContent = 'newtext';

Firefox не поддерживает innerText, а IE8 не поддерживает textContent, поэтому вам нужно использовать оба варианта, если вы хотите поддерживать совместимость между браузерами.

И если вы хотите избежать переплавов (вызванных innerText), где это возможно:

var span = document.getElementById('myspan');
if ('textContent' in span) {
    span.textContent = 'newtext';
} else {
    span.innerText = 'newtext';
}
27
задан simo 1 February 2017 в 11:10
поделиться