Показать сообщение отдельно
  #4 (permalink)  
Старый 29.09.2011, 21:54
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

лэхко

эвальте их дело в шляпе

написано с опорой на великий Prototype.js
function evalScripts( string ){
    
    var reg = '<script[^>]*>([\\S\\s]*?)<\/script>',
        matchAll = new RegExp( reg,'img'),
        matchOne = new RegExp( reg,'im'); 
    
    evalScripts=function(string){
        
        var all=string.match(matchAll)||[],i=0;
        
        while(all[i])
            new Function("", (all[i++].match(matchOne)||['', ''])[1] )();
        
    }
    evalScripts(string);
}


пример, функция сжата
function evalScripts(d){var e=RegExp("<script[^>]*>([\\S\\s]*?)<\/script>","img"),f=/<script[^>]*>([\S\s]*?)<\/script>/im;evalScripts=function(b){for(var b=b.match(e)||[],c=0;b[c];)(new Function("",(b[c++].match(f)||["",""])[1]))()};evalScripts(d)}


evalScripts("тут скриптов нет"); // ничего не выдаст
evalScripts("adb<script>alert('тут один скрипт')</"+"script>kjkj");
evalScripts("adb<script>alert('А тут два. Это первый')</"+"script>kjkj<script>alert('Это второй')</"+"script>");
Ответить с цитированием