{html: "Your text is: <b>["+stext+"]</b>"}
Это ваша проблема: вы берете текстовую строку и добавляете ее в HTML-разметку. Естественно, любые <
символы в текстовой строке станут разметкой, и вы станете потенциальной уязвимостью межсайтового скриптинга на стороне клиента.
Вы можете экранировать HTML, но в JS нет встроенной функции для этого, поэтому вы должны определить это самостоятельно, например ::
// HTML-encode a string for use in text content or an attribute value delimited by
// double-quotes
//
function HTMLEncode(s) {
return s.replace(/&/g, '&').replace(/</g, '<').replace(/"/g, '"');
}
...
var result = new Element('p', {html: "Your text is: <b>["+HTMLEncode(stext)+"]</b>"});
Однако, как правило, проще использовать методы DOM для добавления простого текста без необходимости взлома строк. Я верю, что Му сделает это так:
var bold= new Element('b', {text: stext});
var result= new Element('p', {text: 'Your text is: '});
bold.inject(result);