Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   document.createElement('script'); (https://javascript.ru/forum/events/63573-document-createelement-%27script%27-%3B.html)

Conus 15.06.2016 18:11

document.createElement('script');
 
object[n[i]] = function ed() { alert() }

var sc = document.createElement('script');
				sc.innerHTML = object[n[i]];
				document.head.appendChild(sc);
				
				sc.onload = ed(); // если string то не работает

     sc.onload =  'как здесь указать марк функции в строковом   представлении, чтобы срабатывало '

Rise 15.06.2016 19:10

Conus, напиши по-русски что ты хочешь...

Conus 15.06.2016 19:40

ed() = object.slice(7, 11)

script.onload = object.slice(7, 11)

дело в том что так не срабатывает фунция
а если в коде прописан марк функции script.onload = ed() то срабатывает

допустим
var functio = 'ed()';
script.onload = functio
и не работает

pureJS 15.06.2016 19:42

Цитата:

Сообщение от Conus (Сообщение 419547)
sc.onload = ed(); // если string то не работает
//sc.onload =  как здесь указать марк функции в строковом представлении, чтобы срабатывало


Conus, правильно будет так:
sc.onload = ed; //ссылка на функцию, но никак не её вызов

Conus 15.06.2016 19:50

а как сделать вызов из строки

pureJS 15.06.2016 19:51

Цитата:

Сообщение от Conus (Сообщение 419560)
а как сделать вызов из строки

Напиши код как ты это себе представляешь.

Conus 15.06.2016 19:56

var n = Object.keys(object).sort(function (key) { return object[key] }) 
    for(i in n)
    {   
		if(typeof(object[n[i]]) == 'function')
		{
			if(n[i] != 'one') { e.setAttribute(n[i], 'new Function'); e.Function = object[n[i]]; }	
			else
			{		
				var v = '', x = '' + object[n[i]];
			    for (c in x) 
				{
					v = x.slice(c, (x.length- 1));
					if(x[c] == ' ') { for(var q in v) { if(v[q] == ')') { q++; v = v.slice(0, q); break; } }  break; }  
				}
                   
				var sc = document.createElement('script');
				sc.innerHTML = object[n[i]];
				document.head.appendChild(sc); 
				
				sc.onload = ed; 
				sc.onload = v //	this = я себе не представляю!
			
			
			}
		}

pureJS 15.06.2016 20:04

Напиши ВСЕГО 1 СТРОЧКУ:
1. Строка с функцией.

Conus 15.06.2016 20:14

какую строчку
мне из объекта вытянуть нужно функцию и вызвать её же после добавления в head

как сделать вызов?

pureJS 15.06.2016 20:22

Цитата:

Сообщение от Conus (Сообщение 419560)
а как сделать вызов из строки

Цитата:

Сообщение от Conus (Сообщение 419565)
какую строчку
мне из объекта вытянуть нужно функцию и вызвать её же после добавления в head

как сделать вызов?


Сначала ты пишешь про строку, потом уже отрицаешь это.

Думаю, что я после долгих раздумий понял, что ты имеешь ввиду:
object[n[i]] = "function ed(){alert('test')}" //строка

var sc = document.createElement('script');
sc.text = object[n[i]];
document.head.appendChild(sc);

sc.onload = ed;


Часовой пояс GMT +3, время: 14:15.