- 1
- 2
- 3
- 4
var body=document.getElementsByTagName('body')[0];
var newBody="";
newBody='<div id="'+this.cntID+'" class="hide you">'+this.flashCntDivArr.join('')+'</div>'+bgLayerDiv+"<div id='tplCnt'>"+body.innerHTML+"</div>";
body.innerHTML=newBody;
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+157
var body=document.getElementsByTagName('body')[0];
var newBody="";
newBody='<div id="'+this.cntID+'" class="hide you">'+this.flashCntDivArr.join('')+'</div>'+bgLayerDiv+"<div id='tplCnt'>"+body.innerHTML+"</div>";
body.innerHTML=newBody;
Натолкнулся в одном из проектов на такой вот способ добавления элемента в DOM. Я чего-то не понимаю?
Если же флеш установлен, происходит такое:
newBody='<div id="'+this.cntID+'" class="hide you">'+this.flashCntDivArr.join('')+'</div>'+bgLayerDiv+body.innerHTML;
Соответственно, весь флеш на странице в это время перезагружается. Добавление этого div происходит только один раз.
Наверное, просто не нужно было грузить флеш изначально, а только после проверки.
Но если флеш плагин не подключен, то происходит то, что запощено в говнокоде: весь контент на странице оборачивается в div, а перед контентом вставляется div с сообщением об ошибке.
document.getElementsByTagName('body')[0].innerHTML='<div id="'+this.cntID+'" cla...
Только экранирования нет, оно мне не нужно было. Работает примерно так:
У резига кстати похожий шаблонизатор был.
$('<'+name+'/>',{attrs}).append(inner).
Но всё-равно уверен, что такую байду писали многие js-кодеры изнуренные document.createElementами.
Ром, а у тебя оно тоже работает в том случае когда второй аргумент - массив вложенных, а не мап?
Да, ещё можно функции подставлять, которые генерят спецификации, вроде такого: