![Старый](/forum/images/ca_serenity/statusicon/post_old.gif)
24.03.2009, 15:02
|
Интересующийся
|
|
Регистрация: 24.03.2009
Сообщений: 15
|
|
Не, если алерт пернести в самое начало скрипта, он, конечно, работает. Вот, например, в следующем скрипте алерт срабатывает, а вот замена - нет.
alert('asdf');
document.addEventListener (
'load',
function ()
{
document.body.innerHTML = document.body.innerHTML.replace(/работает/gi, 'пашет');
},
false
);
Явно ведь, что косяк в русском языке! Ведь попытка заменить 'Kolyaj' на 'asdfasfd' была почти успешной. "Почти", потому что замены сделаны были, а вот местный ДжаваСкрипт работать перестал (кнопочки типа "процитировать", "выделить курсивом" и т.д.). Пришлось отключать плагин и перезагружать страницу. В чем глюк?
|
|
![Старый](/forum/images/ca_serenity/statusicon/post_old.gif)
24.03.2009, 15:11
|
Интересующийся
|
|
Регистрация: 24.03.2009
Сообщений: 15
|
|
На счет МэджикФанкшн. В мануале сказано следующее:
Цитата:
|
Этот метод может использоваться UserJS для отмены глобальных функций, определенных постоянными скриптами
|
Посмотрите пожалуйста на объявление функции showBanner. Я, конечно, могу ошибаться, но ведь var создает переменную, да еще и локальную. Может проблема именно в этом?
|
|
![Старый](/forum/images/ca_serenity/statusicon/post_old.gif)
24.03.2009, 15:19
|
![Аватар для Gvozd](https://javascript.ru/forum/image.php?u=205&dateline=1210101799) |
Матрос
|
|
Регистрация: 04.04.2008
Сообщений: 6,246
|
|
Сообщение от the_name
|
Явно ведь, что косяк в русском языке!
|
нет.проблема в чем-то другом у вас.
потому что все отлично "пашет"
тестировал опять таки на этой странице.
все работает как с русским языком, так и с английским.
Уважаемый.Для кого пишутся мои посты и даются ссылки?
вы читали темы, указанные мною полностью?
тогда почему вы все еще пытаетесь пользоватся этим способом замены?
да, этот вариант портит JS. да, он передергивает страницу.да, в указанных мною темах есть скрипты также не лишенные глюков, но которые получше чем этот,и не портят JS к примеру.
и они также работают отлично с русским языком, как и этот.
почему у вас не получается работать с русским языком, я понятия не имею.
выложите код простейшей страницы, на которой у вас не срабтывает замена русских слов, и мы посмотрим что не так.
какой у вас браузер?в другом пробовали?
короче говоря пробуйте скрипты из указанных мною тем.
исправляйте в них глюки, и будет вам счастье
|
|
![Старый](/forum/images/ca_serenity/statusicon/post_old.gif)
24.03.2009, 15:29
|
Новичок на форуме
|
|
Регистрация: 19.02.2008
Сообщений: 9,177
|
|
Сообщение от the_name
|
местный ДжаваСкрипт работать перестал (кнопочки типа "процитировать", "выделить курсивом" и т.д.). Пришлось отключать плагин и перезагружать страницу. В чем глюк?
|
Таким кодом вы фактически заменяете весь DOM, поэтому навешанные ранее события перестают работать.
|
|
![Старый](/forum/images/ca_serenity/statusicon/post_old.gif)
24.03.2009, 15:39
|
![Аватар для Gvozd](https://javascript.ru/forum/image.php?u=205&dateline=1210101799) |
Матрос
|
|
Регистрация: 04.04.2008
Сообщений: 6,246
|
|
Сообщение от Kolyaj
|
Таким кодом вы фактически заменяете весь DOM, поэтому навешанные ранее события перестают работать.
|
это конечно да.
правда в коде страницы есть обработчики повешенные с помощью атрибута. вот почему они не работают, не понятно.
но, в любом случае такой заменоя пользоватся не стоит.
самый лучший вариант, работать исключительно с текстовыми нодами в индивидуальном порядке.
писал человеку из одного вышеупомянутого треда доведенную до ума версию скрипта.
тормозов нету.нажал, и оно почти мигом проделало все замены, не нарушая DOM-структуру, и меняя ее только там где надо(там замена с добавлением тегов требовалась, поэтому текстовые ноды естественно менялись на набор нод с тегами и без)
|
|
![Старый](/forum/images/ca_serenity/statusicon/post_old.gif)
24.03.2009, 15:44
|
Интересующийся
|
|
Регистрация: 24.03.2009
Сообщений: 15
|
|
Ладно бог с ней, с заменой. За ссылки спасибо, конечно. За скрипты в особенности. А что с МаджикФанкшн-то не так?
У меня опера 9.25.
|
|
![Старый](/forum/images/ca_serenity/statusicon/post_old.gif)
24.03.2009, 16:22
|
Новичок на форуме
|
|
Регистрация: 19.02.2008
Сообщений: 9,177
|
|
Код, который вокруг определения showBanner в вражеском скрипте, покажите.
|
|
![Старый](/forum/images/ca_serenity/statusicon/post_old.gif)
24.03.2009, 18:02
|
Интересующийся
|
|
Регистрация: 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 аргумента. Сути это не меняет.
|
|
![Старый](/forum/images/ca_serenity/statusicon/post_old.gif)
24.03.2009, 18:06
|
Новичок на форуме
|
|
Регистрация: 19.02.2008
Сообщений: 9,177
|
|
Зная оперу, можно предположить, что в данном случае ей нужен defineMagicVariable.
|
|
![Старый](/forum/images/ca_serenity/statusicon/post_old.gif)
24.03.2009, 18:25
|
Флудер
|
|
Регистрация: 25.07.2008
Сообщений: 1,271
|
|
Знакомый код ![Lol](https://javascript.ru/forum/images/smilies/lol.gif)
|
|
|
|