Показать сообщение отдельно
  #82 (permalink)  
Старый 10.04.2009, 16:44
Аватар для Riim
Рассеянный профессор
Отправить личное сообщение для Riim Посмотреть профиль Найти все сообщения от Riim
 
Регистрация: 06.04.2009
Сообщений: 2,379

Сообщение от grusha
Меня меньше интересует размер файла , больше интересует его производительность .
Ну тогда так вот:
var TextNode = {
	each: function(callback, parent) {
		for (var childNodes = (parent || document.body).childNodes, i = 0; i < childNodes.length; i++) {
			var I = childNodes[i];
			I.nodeType == 1
				? arguments.callee(callback, I)
				: I.nodeType == 3 && callback(I, i);
		}
	}
};

window.onload = function() {
	var callback = function(noda) {
		if (noda.nodeValue.indexOf('youtube.com') > -1) {
			var v = noda.nodeValue.replace(arguments.callee.regExp, '<a href="$1">$1</a>');
			if (v != noda.nodeValue) {
				var div = arguments.callee.div;
				div.innerHTML = v;
				if (div.firstChild) {
					var f = arguments.callee.fragment;
					do f.appendChild(div.firstChild);
					while (div.firstChild);
					noda.parentNode.replaceChild(f, noda);
				}
			}
		}
	};
	callback.regExp = /(http\:\/\/www\.youtube\.com\/watch\?v\=[0-9a-z]{11})/gi;
	callback.div = document.createElement('div');
	callback.fragment = document.createDocumentFragment();
	
	TextNode.each(callback);
};


Уйти от do-while без появления лишних операций не получается у меня.



Сообщение от grusha
И если возможно ,то код который бы работал с библиотекой jQuery .
Зачем тут Jquery?
Разве, что вместо window.onload использовать $.ready .

Сообщение от grusha
Так же видел в коде windows.onload , моих знаний не так много и наверно я чето не понимаю , но с этим бывают проблемы.
Как и сказал x-yuri проблемы будут когда ты захочешь повесить на windows.onload несколько обработчиков.
$.ready в Jquery для того и сделан.
Ответить с цитированием