таки одна ошибочка была(я просто не занимался проверкой работы кода, который отвечал за внешние скрипты)
scriptStr = scriptStr.slice(scriptStr.indexOf('src=') + 5, scriptStr.indexOf('>') - 1);
теперь все работает. вот функция:
function strToFunc(str) {
while(str.indexOf('function') != -1) {
str = str.slice(str.indexOf('function') + 8);
var fName = str.replace(' ', '');
while(fName.indexOf(' ') != -1) {
fName = fName.replace(' ', '')
}
fName = fName.slice(0, fName.indexOf('('));
var fVar = str.slice(str.indexOf('(') + 1, str.indexOf(')'));
while(fVar.indexOf(' ') != -1) {
fVar = fVar.replace(' ', '');
}
/*fVar = fVar.split(',');
fVar = fVar.join('", "');*/
while(fVar.indexOf(',') != -1) {
fVar = fVar.replace(',', '\\f');
}
while(fVar.indexOf('\\f') != -1) {
fVar = fVar.replace('\\f', '", "');
}
fVar = '"' + fVar + '"';
var fStr = str.slice(str.indexOf('{') + 1);
if (str.indexOf('function') != -1) {
fStr = fStr.slice(0, fStr.indexOf('function'));
}
fStr = fStr.slice(0, fStr.lastIndexOf('}'));
while(fStr.indexOf('"') != -1 || fStr.indexOf('\n') != -1) {
fStr = fStr.replace('"', '\\f').replace('\n', '');
}
while(fStr.indexOf('\\f') != -1) {
fStr = fStr.replace('\\f', '\\"');
}
fStr = '"' + fStr + '"';
window[fName] = new Function(eval(fVar), eval(fStr));
}
}
единственное, что мне не нравится, так это этот кусок кода.
while(fStr.indexOf('"') != -1 || fStr.indexOf('\n') != -1) {
fStr = fStr.replace('"', '\\f').replace('\n', '');
}
while(fStr.indexOf('\\f') != -1) {
fStr = fStr.replace('\\f', '\\"');
}
что бы нормально заменить все кавычки приходится делать два цыкла. но другого вариант мне на ум не приходит(