Вставка SMARTY функции в innerHTML
Ребята помогите грамотно решить следующую задачу.
Есть код: {literal} <script type="text/javascript"> document.getElementById('WallComments').innerHTML = '{/literal}{he_wall_display object="album_file" object_id="35156"}{literal}'; </script> {/literal} Тут я вставляю смарти функцию. Все собственно сделано правильно, но сама функция имеет следующее содержание, из за которого вставка корректно не происходит. Функция производит вставку целого файла. Содержимое вставляемого файла: <style> .media_container {ldelim} margin-left: 20px; {rdelim} .video_info {ldelim} margin-top: 6px; padding-top: 6px; {rdelim} </style> <script type="text/javascript"> window.addEvent('domready', function(){ldelim} he_wall.action_ids = {$js_action_ids}; he_wall.wall_object = '{$wall_object}'; he_wall.wall_object_id = {$wall_object_id}; he_wall.allow_post = {$allow_post}; he_wall.actions_per_page = {$setting.setting_he_wall_actions_per_page}, he_wall.disable_music_upload = {if !$setting.setting_he_wall_disable_music}false{else}true{/if}; he_wall.construct( '{$wall_uid}' ); {rdelim}); </script> {if $wall_object != 'userhome'} <style type="text/css"> .wall_action .wall_link {ldelim}display: none;{rdelim} </style> {/if} ... // и так далее В итоге готовая страничка в браузере имеет следующий вид: <script type="text/javascript"> document.getElementById('WallComments').innerHTML = '<style> .media_container { margin-left: 20px; } .video_info { margin-top: 6px; padding-top: 6px; } </style> <script type="text/javascript"> window.addEvent('domready', function(){ he_wall.action_ids = ["44828","44656"]; he_wall.wall_object = 'album_file'; he_wall.wall_object_id = 35156; he_wall.allow_post = 1; he_wall.actions_per_page = 15, he_wall.disable_music_upload = true; he_wall.construct( 'wall_4e4e3c3079609' ); }); </script> <style type="text/css"> .wall_action .wall_link {display: none;} </style> // и так далее Вообщем что можно сделать чтобы не редактировать сам файл шаблона, который вставляет смарти функция. Потому, там менять очень много чего придется... При вставке {he_wall_display object="album_file" object_id="35156"} В обычный HTML код все работает корректно. Но как бы это вставлять через innerhtml? |
Цитата:
Должно работать, если только в генерируемом коде нет закрывающего тега </textarea>. <textarea id="aaa"> <script><script><script> <html></body><head><link> </textarea> <script>alert(document.getElementById('aaa').value)</script>Но это грязный хак, и я бы не советовал им пользоваться. Ещё можно попробовать поместить генерируемый код в комментарий и найти комментарий в DOM дереве. Но о работоспособности этого метода я ничего не знаю. |
А можно использовать special chars для HTML и тогда даже закрытая textarea не помешает:
<textarea id="aaa"> <script><script><script> <html></body><head><link> </textarea> <script>alert(document.getElementById('aaa').value)</script> |
devote, тогда уж обработать строку (эксейпить кавычки, переносы строк, слеши) и засунуть в таком виде в document.getElementById('WallComments').innerHTML = '…';
|
Часовой пояс GMT +3, время: 22:40. |