SaNeK
Я так делал но не понравилось... люблю кошерные решения.
Код:
<span id="myspan">1</span>
<script type="text/javascript">
load = function()
{
var result = '<b>1</b><script>\r\nalert(123);\r\n<'+'/script><b>1</b>';
var el = document.createElement('div');
var target_div = document.getElementById('myspan');
el.innerHTML = result;
var a = new Array();
for (var k = 0; k < el.childNodes.length; k++) {a[k] = el.childNodes[k];}
target_div.innerHTML = "";
for (var k in a)
{
if (a[k].tagName == 'SCRIPT') {eval(a[k].innerHTML);}
else {target_div.appendChild(a[k]);}
}
}
load();
</script>
-~{}~ 01.11.07 11:40:
MiRacLe
Я так делал... это некрасивое решение. Все равно надо было бы регуляркой обрабатывать текст вывода на сервере и класть в отдельную переменную скрипты, а это некрасиво.
-~{}~ 01.11.07 11:49:
SaNeK
Внимательно почитал ссылку, спасибо.
Код:
<span id="myspan">1</span>
<script type="text/javascript">
load = function()
{
var result = '<b>1</b><script defer="true">\r\nalert(123);\r\n<'+'/script><b>1</b>';
var el = document.createElement('div');
var target_div = document.getElementById('myspan');
el.innerHTML = result;
target_div.appendChild(el);
}
load();
</script>
Катит и в IE и в FF, хотелось бы еще и оперу захватить.
-~{}~ 01.11.07 11:57:
Не удалось последним вариантом захватить Оперу, поэтому решил использовать вариант ...for (var k = 0; k < el.childNodes.length; k++) {a[k] = el.childNodes[k];}.... т.к. он работает везде.
-~{}~ 01.11.07 12:14:
Патч для kLayers:
Код:
KLP.swrite=function(str)
{
this.write('');
this.sadd(str);
}
KLP.sadd=function(str)
{
var el = document.createElement('span');
el.innerHTML = str;
var a = new Array();
for (var k = 0; k < el.childNodes.length; k++) {a[k] = el.childNodes[k];}
for (var k in a)
{
if (a[k].tagName == 'SCRIPT') {eval(a[k].innerHTML);}
else {this.object.appendChild(a[k]);}
}
}