Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 24.03.2009, 15:02
Интересующийся
Отправить личное сообщение для the_name Посмотреть профиль Найти все сообщения от the_name
 
Регистрация: 24.03.2009
Сообщений: 15

Не, если алерт пернести в самое начало скрипта, он, конечно, работает. Вот, например, в следующем скрипте алерт срабатывает, а вот замена - нет.
alert('asdf');
document.addEventListener (
    'load',
    function () 
    {
	document.body.innerHTML = document.body.innerHTML.replace(/работает/gi, 'пашет');
    },
    false
  );
Явно ведь, что косяк в русском языке! Ведь попытка заменить 'Kolyaj' на 'asdfasfd' была почти успешной. "Почти", потому что замены сделаны были, а вот местный ДжаваСкрипт работать перестал (кнопочки типа "процитировать", "выделить курсивом" и т.д.). Пришлось отключать плагин и перезагружать страницу. В чем глюк?
Ответить с цитированием
  #12 (permalink)  
Старый 24.03.2009, 15:11
Интересующийся
Отправить личное сообщение для the_name Посмотреть профиль Найти все сообщения от the_name
 
Регистрация: 24.03.2009
Сообщений: 15

На счет МэджикФанкшн. В мануале сказано следующее:
Цитата:
Этот метод может использоваться UserJS для отмены глобальных функций, определенных постоянными скриптами
Посмотрите пожалуйста на объявление функции showBanner. Я, конечно, могу ошибаться, но ведь var создает переменную, да еще и локальную. Может проблема именно в этом?
Ответить с цитированием
  #13 (permalink)  
Старый 24.03.2009, 15:19
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,246

Сообщение от the_name
Явно ведь, что косяк в русском языке!
нет.проблема в чем-то другом у вас.
потому что все отлично "пашет"
тестировал опять таки на этой странице.
все работает как с русским языком, так и с английским.

Уважаемый.Для кого пишутся мои посты и даются ссылки?
вы читали темы, указанные мною полностью?
тогда почему вы все еще пытаетесь пользоватся этим способом замены?
да, этот вариант портит JS. да, он передергивает страницу.да, в указанных мною темах есть скрипты также не лишенные глюков, но которые получше чем этот,и не портят JS к примеру.
и они также работают отлично с русским языком, как и этот.
почему у вас не получается работать с русским языком, я понятия не имею.
выложите код простейшей страницы, на которой у вас не срабтывает замена русских слов, и мы посмотрим что не так.
какой у вас браузер?в другом пробовали?

короче говоря пробуйте скрипты из указанных мною тем.
исправляйте в них глюки, и будет вам счастье
Ответить с цитированием
  #14 (permalink)  
Старый 24.03.2009, 15:29
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Сообщение от the_name
местный ДжаваСкрипт работать перестал (кнопочки типа "процитировать", "выделить курсивом" и т.д.). Пришлось отключать плагин и перезагружать страницу. В чем глюк?
Таким кодом вы фактически заменяете весь DOM, поэтому навешанные ранее события перестают работать.
Ответить с цитированием
  #15 (permalink)  
Старый 24.03.2009, 15:39
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,246

Сообщение от Kolyaj
Таким кодом вы фактически заменяете весь DOM, поэтому навешанные ранее события перестают работать.
это конечно да.
правда в коде страницы есть обработчики повешенные с помощью атрибута. вот почему они не работают, не понятно.
но, в любом случае такой заменоя пользоватся не стоит.
самый лучший вариант, работать исключительно с текстовыми нодами в индивидуальном порядке.
писал человеку из одного вышеупомянутого треда доведенную до ума версию скрипта.
тормозов нету.нажал, и оно почти мигом проделало все замены, не нарушая DOM-структуру, и меняя ее только там где надо(там замена с добавлением тегов требовалась, поэтому текстовые ноды естественно менялись на набор нод с тегами и без)
Ответить с цитированием
  #16 (permalink)  
Старый 24.03.2009, 15:44
Интересующийся
Отправить личное сообщение для the_name Посмотреть профиль Найти все сообщения от the_name
 
Регистрация: 24.03.2009
Сообщений: 15

Ладно бог с ней, с заменой. За ссылки спасибо, конечно. За скрипты в особенности. А что с МаджикФанкшн-то не так?
У меня опера 9.25.
Ответить с цитированием
  #17 (permalink)  
Старый 24.03.2009, 16:22
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Код, который вокруг определения showBanner в вражеском скрипте, покажите.
Ответить с цитированием
  #18 (permalink)  
Старый 24.03.2009, 18:02
Интересующийся
Отправить личное сообщение для the_name Посмотреть профиль Найти все сообщения от the_name
 
Регистрация: 24.03.2009
Сообщений: 15

Вот целиком весь тег с вражеской функцией.
<script type="text/javascript">
<!--
var showBanner = function(id, onScroll, size, params){
	var cm=(document.compatMode=="CSS1Compat"),de=document.documentElement,db=document.body;
	var code=function(){
		var rnd = Math.round(Math.random()*1000000000), src = 'http://porno-xxx.ru/cgi-bin/erle.cgi?'+params;
		return '<iframe src="'+src+'" id="'+id+'_'+rnd+'" frameborder="0" vspace="0" hspace="0" '+size+' marginwidth="0" marginheight="0" scrolling="no" style="overflow:hidden"></iframe>';
	};
	var banner = obj = document.getElementById(id); 
	if (!obj)return;
	if (!onScroll) { obj.innerHTML = code(); return; }
	var ar_top = parseInt(obj.style.height)/2;
	while(obj.offsetParent){ ar_top += obj.offsetTop; obj = obj.offsetParent; }
	var ar_scroll = function(){
		var ch = self.innerHeight || cm && de.clientHeight || db.clientHeight;
		var st = self.pageYOffset || cm && de.scrollTop || db.scrollTop;
		if (ar_top > st && st + ch > ar_top) {
			removeEvent(window, 'scroll', ar_scroll);
			banner.style.visibility = "visible";
			banner.innerHTML = code();
		}
	};
	addEvent(window, 'scroll', ar_scroll);
	ar_scroll(id, size, params);
};
onDomReady(function(){
//addEvent(window, 'load', function(){
	new showBanner("banner001", false, 'width="120" height="300"', 'sid=103715&bt=30&pz=1&sz=m_35_44&rnd=' + Math.round(Math.random() * 100000000));
	new showBanner("banner002", true, 'width="600" height="90"', 'sid=103715&bt=19&pz=1&sz=m_35_44&rnd=' + Math.round(Math.random() * 100000000));
	//clean AR
	var c = document.cookie.split(/\s*;\s*/);
	var date = new Date(); date.setTime(1); var exp = date.toGMTString();
	for (var i=0;i<c.length;i++) {
		var n = c[i].split('=')[0];
		if (n.substr(0, 3) == "ar_") {
			document.cookie = n + "= ; expires=" + exp + "; path=/";
		}
	}
});

//-->
</script>
Выше я намеренно для простоты писал, что showBanner имеет только 2 аргумента. Сути это не меняет.
Ответить с цитированием
  #19 (permalink)  
Старый 24.03.2009, 18:06
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Зная оперу, можно предположить, что в данном случае ей нужен defineMagicVariable.
Ответить с цитированием
  #20 (permalink)  
Старый 24.03.2009, 18:25
Флудер
Отправить личное сообщение для ZoNT Посмотреть профиль Найти все сообщения от ZoNT
 
Регистрация: 25.07.2008
Сообщений: 1,271

Знакомый код
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Скрыть ссылку на js Googert Общие вопросы Javascript 10 21.02.2012 17:29
jQuery Ajax Rater Plugin и массив POST - Нужна помощь TROODON jQuery 12 30.12.2009 22:44
Кроссдоменный GET запрос. Нужна помощь! notxcain AJAX и COMET 4 07.12.2008 20:55
Загрузка дополнительного js кода с сервера Anonymous2008 Общие вопросы Javascript 5 20.11.2008 12:33
опубликуйте пожалуйста функционал JS scuter Сайт Javascript.ru 21 05.06.2008 17:44