Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 25.10.2011, 01:24
Аватар для float
Профессор
Отправить личное сообщение для float Посмотреть профиль Найти все сообщения от float
 
Регистрация: 01.07.2010
Сообщений: 387

getScript autoexecution
перерыл исходники - не могу найти как они исполняют полученный скрипт.
в сорсах ничего похожего на eval...
неужели в дерево пихают?
Ответить с цитированием
  #2 (permalink)  
Старый 25.10.2011, 11:34
Профессор
Отправить личное сообщение для DjDiablo Посмотреть профиль Найти все сообщения от DjDiablo
 
Регистрация: 04.02.2011
Сообщений: 1,815

Очень похоже что в дерево


Типичное решение

if (navigator.appName=="Microsoft Internet Explorer") {
	window.execScript(xmlhttp.responseText);
} else {
	var script = document.createElement('script');
	var textScr = document.createTextNode(xmlhttp.responseText);
	document.body.appendChild(script);
	script.appendChild(textScr);
};


А вот что я нашёл в jquery.

var head = document.head || document.getElementsByTagName( "head" )[0] ||   
          document.documentElement, 
          
          script = document.createElement( "script" );
          
        // scriptEval() видимо служит какойто тестилкой для ie, в суть не вникал
	if ( jQuery.support.scriptEval() ) {
		script.appendChild( document.createTextNode( data ) );
	} else {
		script.text = data;
	}

	// Use insertBefore instead of appendChild to circumvent an IE6 bug.
	// This arises when a base node is used (#2709).
	head.insertBefore( script, head.firstChild );
	head.removeChild( script );


В остальных либах(что попались), суть то же самое, пихают script в head.
__________________
Лучше калымить в гандурасе чем гандурасить на колыме

Последний раз редактировалось DjDiablo, 25.10.2011 в 14:33.
Ответить с цитированием
  #3 (permalink)  
Старый 25.10.2011, 15:28
Аватар для float
Профессор
Отправить личное сообщение для float Посмотреть профиль Найти все сообщения от float
 
Регистрация: 01.07.2010
Сообщений: 387

фиг знает как я это пропустил. сенкс.

а в чёт соль то? зачем такие сложности?
я так понимаю, все равно скрипт в созданном теге в eval передаётся...
Ответить с цитированием
  #4 (permalink)  
Старый 25.10.2011, 15:55
Профессор
Отправить личное сообщение для DjDiablo Посмотреть профиль Найти все сообщения от DjDiablo
 
Регистрация: 04.02.2011
Сообщений: 1,815

Хоть убей 1.4.1 и 1.6.1 смотрел. Ни единого eval в коде нету
Тупо поиск слова "eval" в редакторе делаешь, и нечего не находишь, кроме частично похожих, названиями функций.

Идея походу вообще позаимствована с webreflection. Тут раскритиковано предыдущее решение из jquery.
Даже в сырцах jquery есть ссылка на эту страницу
http://webreflection.blogspot.com/20...n-and-dom.html
__________________
Лучше калымить в гандурасе чем гандурасить на колыме

Последний раз редактировалось DjDiablo, 25.10.2011 в 16:28.
Ответить с цитированием
  #5 (permalink)  
Старый 25.10.2011, 16:15
Аватар для float
Профессор
Отправить личное сообщение для float Посмотреть профиль Найти все сообщения от float
 
Регистрация: 01.07.2010
Сообщений: 387

Цитата:
Хоть убей 1.4.1 и 1.6.1 смотрел. Ни единого eval в коде нету
Тупо поиск слова "eval" в редакторе делаешь, и нечего не находишь, кроме частично похожих, названиями функций.
я имел ввиду, что передаётся на уровне браузера.
а евал в jqeury есть. где-то видел строчку window['eval'].call...

так что там с +/- подхода?
я чот особой разницы не вижу...
Ответить с цитированием
  #6 (permalink)  
Старый 25.10.2011, 17:04
Профессор
Отправить личное сообщение для nikita.mmf Посмотреть профиль Найти все сообщения от nikita.mmf
 
Регистрация: 01.02.2010
Сообщений: 364

Посмотрите на jquery 1.6.4
// Evaluates a script in a global context
	// Workarounds based on findings by Jim Driscoll
	// [url]http://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context[/url]
	globalEval: function( data ) {
		if ( data && rnotwhite.test( data ) ) {
			// We use execScript on Internet Explorer
			// We use an anonymous function so that context is window
			// rather than jQuery in Firefox
			( window.execScript || function( data ) {
				window[ "eval" ].call( window, data );
			} )( data );
		}
	},
Ответить с цитированием
  #7 (permalink)  
Старый 25.10.2011, 17:25
Профессор
Отправить личное сообщение для DjDiablo Посмотреть профиль Найти все сообщения от DjDiablo
 
Регистрация: 04.02.2011
Сообщений: 1,815

факмоймозг . Eval воскрес из небытья
Согласно спецификации ecmaScript 5, скоро через eval даже переменную создать будет нельзя,я думал прежде всего из за этого, на использование eval страшное табу наложено(безопасность в расчёт неберу).

Это что ж получается последняя версия jquery теперь не валидная
__________________
Лучше калымить в гандурасе чем гандурасить на колыме

Последний раз редактировалось DjDiablo, 25.10.2011 в 18:40.
Ответить с цитированием
  #8 (permalink)  
Старый 25.10.2011, 17:49
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Сообщение от DjDiablo
Это что ж получается последняя версия jquery теперь не валидная
Что значит невалидная?
Ответить с цитированием
  #9 (permalink)  
Старый 25.10.2011, 17:52
Профессор
Отправить личное сообщение для nikita.mmf Посмотреть профиль Найти все сообщения от nikita.mmf
 
Регистрация: 01.02.2010
Сообщений: 364

Сообщение от DjDiablo Посмотреть сообщение
факмоймозг . eval воскрес.
Ура товарищи !!!!
eval никогда и не умирал, просто его использование не желательно
Ответить с цитированием
  #10 (permalink)  
Старый 25.10.2011, 18:45
Профессор
Отправить личное сообщение для DjDiablo Посмотреть профиль Найти все сообщения от DjDiablo
 
Регистрация: 04.02.2011
Сообщений: 1,815

Где то читал что валидаторы нарушений рекомендаций в коде jquery, не находят.
Всмысле там вообще 0 нарушений. Код на 100% валиден. (Ссылку теперь уже наверное не найду, как бы не хабр). Мне отчего-то кажется они врут ))

.eval валидаторы за ошибку считают, полюбас теперь не 100%

С валидаторами это конечно всё понты, а вот то что eval опять уберут из за ограничений строгого режима в 5 спецификации, я почти уверен.
__________________
Лучше калымить в гандурасе чем гандурасить на колыме

Последний раз редактировалось DjDiablo, 28.10.2011 в 18:03.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
getScript html псевдочеловек jQuery 5 22.04.2011 22:36