Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 15.07.2015, 14:45
Новичок на форуме
Отправить личное сообщение для Yarik Посмотреть профиль Найти все сообщения от Yarik
 
Регистрация: 15.07.2015
Сообщений: 5

Исполнение скрипта в доме
Добрый день, уважаемые форумчане!
При нажатии на кнопку заношу в div код со скриптом, как мне выполнить этот скрипт?
При попытке обратится к функции внутри скрипта выскакивает ошибка о том, что она не определена.
Ответить с цитированием
  #2 (permalink)  
Старый 15.07.2015, 15:01
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,205

Сообщение от Yarik
заношу в div код со скриптом
Тестовый пример челе сделай...
Ответить с цитированием
  #3 (permalink)  
Старый 15.07.2015, 15:34
Новичок на форуме
Отправить личное сообщение для Yarik Посмотреть профиль Найти все сообщения от Yarik
 
Регистрация: 15.07.2015
Сообщений: 5

<div id="out"></div>
при нажати на кнопку
var str = http.responseText;
document.getElementById('out').innerHTML = str;
paint();
после нажатия
<div id="out"><script>function paint(){...}</script></div>

как-то так если схематично

paint(); выдает как раз ошибку видимо из-за того что скрипт из дома не прочитан
Ответить с цитированием
  #4 (permalink)  
Старый 15.07.2015, 15:50
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 23.10.2010
Сообщений: 2,718

Не прочитан. Говорят такие скрипты остаются текстом.

Точно такая же тема http://stackoverflow.com/questions/4...rieved-by-ajax

Последний раз редактировалось kostyanet, 15.07.2015 в 15:52.
Ответить с цитированием
  #5 (permalink)  
Старый 15.07.2015, 15:56
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 23.10.2010
Сообщений: 2,718

Вам придется изменить выдачу с сервера. Надо выкинуть див и теги скрипт, чтобы сделать вот так (цитируется только действующее вещество):

var s = D.createElement('script');
	s.type = 'text/javascript';
	try {
		s.appendChild(D.createTextNode(code));
		D.body.appendChild(s);
	}
	catch (e) {
		s.text = code;
		D.body.appendChild(s);
	}


где D == документ, code = собственно текст скрипта без каких либо хтмл-тегов.
Ответить с цитированием
  #6 (permalink)  
Старый 15.07.2015, 17:07
Новичок на форуме
Отправить личное сообщение для Yarik Посмотреть профиль Найти все сообщения от Yarik
 
Регистрация: 15.07.2015
Сообщений: 5

Спасибо, так работает, правда не все
Ответить с цитированием
  #7 (permalink)  
Старый 15.07.2015, 18:25
Новичок на форуме
Отправить личное сообщение для Yarik Посмотреть профиль Найти все сообщения от Yarik
 
Регистрация: 15.07.2015
Сообщений: 5

Мда уж, криво работало из-за css.
Починил css, сделал через фреймы как и делал изначально с выдачей всего, что нужно в нем. Обидно столько времени на эти махинации и переделки ушло впустую, но зато хоть знаю теперь, как скрипт в дом добавить кроме как методом appendChild(script)+script.onload.
Ответить с цитированием
  #8 (permalink)  
Старый 15.07.2015, 23:20
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 23.10.2010
Сообщений: 2,718

Фреймы - зло.

На самом деле можно найти готовые скрипты загрузчиков которые сами проверяют по урлу или по алиасу был загружен такой скрипт или нет. То есть вам не нужна выдача скриптов с сервера аяксом-шмаяксом. Вы просто проверяете что если какого-то скрипта нет - то сказать чтоб выдали. Там же будет и событие загрузки, в которое можно передать функцию обеспечивающую дальнейшую работу.

Кстати по js мне тут и давали лукарство:

loader=(function(){

	var cache={
		js:{},
		css:{}
	},
	url=function(name,type){
		return (location.protocol=="https:"?"https:":"http:")
			+'//'+location.hostname+'/ass/'+name+'/'+type+'/'+name+'.'+type;
	};

	return {
		css:function(name){
		
			var href=url(name,'css');

			if(cache.css.hasOwnProperty(href))
				return true;
				
			var el = D.createElement("link");
			el.rel = "stylesheet";
			el.href = href;
			cache.css[href] = 1;
			D.head.appendChild(el);
		},
		js:function(name,callback) {
		
			var src=url(name,'js');
			
			if (cache.js.hasOwnProperty(src))
				callback && (callback());
				
			else {
				var el = D.createElement('script'),	loaded = 0;
				el.src = src,
				D.body.appendChild(el),
				cache.js[src] = 1;
				
				if(!callback)
					return true;
					
				el.onload = el.onreadystatechange = function () {
					if ((el.readyState 
						&& el.readyState !== 'complete' 
						&& el.readyState !== 'loaded') || loaded)
						return false;
					el.onload = el.onreadystatechange = null, loaded = 1, callback();
				};
			}
		}
	};
	
})();
Ответить с цитированием
  #9 (permalink)  
Старый 16.07.2015, 05:09
Новичок на форуме
Отправить личное сообщение для Yarik Посмотреть профиль Найти все сообщения от Yarik
 
Регистрация: 15.07.2015
Сообщений: 5

В моей задаче фреймы наверное все-таки лучше.
Содержимое фреймов формирую я, и лучше пусть оно будет отдельно от главной страницы. А во фреймах у меня разные графики с разными количествами, которые тягают инфу из БД.
Так и код краше и сумбура меньше
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не работают 2 скрипта вместе flp88 Ваши сайты и скрипты 0 17.04.2014 11:48
jQuery: странные вещи при добавлении скрипта wwwboy jQuery 2 18.12.2011 23:32
Круговорт скрипта.... Karl Общие вопросы Javascript 1 17.10.2009 15:37
Блок переключения меню на JS, два скрипта в одном файле Dizeloid Элементы интерфейса 0 30.07.2009 12:03
Исполнение PHP скрипта AJAXом KiTaeZa AJAX и COMET 1 19.12.2008 17:39