Просмотр полной версии : Переделать ссылку или вырубить js код!
knyazsergei
23.11.2011, 16:09
{closed}
после загружки страницы замените эту функцию пустышкой
jQuery(function(){ window.spages = function(){} });
knyazsergei
23.11.2011, 18:39
{closed}
хм. ну я на юкозе изменял их функции переназначением :)
стоп. вы хотите редирект убрать? тогда всё равно придётся её переопределить. правда, теперь не пустышку вставлять.
развёрнутый код вашей функции
function spages(p) {
*!*
if (1) {
document.location.href = 'http' + '://www.knyazsergei.ucoz.ru/blog/' + p + '-0-3';
return;
}
*/!*
try {
document.getElementById('myGrid').style.cssText = 'position:absolute; z-index:8; top:0;left:0; display:normal; background: url(\'http://s37.ucoz.net/img/fr/g.gif\'); text-align:center; width:' + document.body.scrollWidth + 'px; height:' + document.body.scrollHeight + 'px;';
} catch (e) {}
_uPostForm('', {
url: 'http' + '://www.knyazsergei.ucoz.ru/blog/' + p + '-0-3-0-0-0-' + Math.floor(Math.random() * 1e8)
});
}
как видно, блок в if(1) будет исполняться всегда. он редиректит юзера и заканчивает выполнение функции.
не стану вспоминать, что делает функция _uPostForm (вроде асинхронно отправляет данные их формы, которая имеет какой-то id, который указывается первым аргументом.. не помню уже)
короче,
Вообщем суть такова есть скрипт обновляющий контент(ajax), но после него ucoz добавляет этот код:
вам необходимо каждый раз переопределять эту функцию после завершения ajax-запроса.
сделать это можно так :
window.spages = function(p) {
try {
document.getElementById('myGrid').style.cssText = 'position:absolute; z-index:8; top:0;left:0; display:normal; background: url(\'http://s37.ucoz.net/img/fr/g.gif\'); text-align:center; width:' + document.body.scrollWidth + 'px; height:' + document.body.scrollHeight + 'px;';
} catch (e) {}
_uPostForm('', {
url: 'http' + '://www.knyazsergei.ucoz.ru/blog/' + p + '-0-3-0-0-0-' + Math.floor(Math.random() * 1e8)
});
}
knyazsergei
23.11.2011, 20:15
{closed}
я знаю. я сам имел дела с этим юкозом.
(к примеру, изменял вывод видео на странице)
тогда можно поудалять обработчики клика на ссылках
(function(){
var i=0, b = document.links;
while(b[i]) {
b[i].onclick = null;
b[i++].removeAttribute('onclick');
}
})();
правда, этот код удалит обработчиков со всей страницы. нам нужно это сделать внутри какого-то элемента.
если надо внутри элемента удалить, то делаем так
function removeClickHandlers(element){
var i=0, b = element.getElementsByTagName("a");
while(b[i]) {
b[i].onclick = null;
b[i++].removeAttribute('onclick');
}
}
функции вскармливаем элемент, внутри которого содержатся ссылки.
если же надо удалить обработчики из прибывшего через ajax текста, можно вообще регулярки заюзать.
но там есть прикол в построении регулярки (могу объяснить) - возни много.
а можно так сделать :
var result = .... ; // тут прибывший через ajax HTML
var cont = document.createElement('span'); // создаём временной контейнер для пришедшего текста
cont.innerHTML = result; // HTML этого элемента - прибывший текст. таким образом мы превратили текст в элементы
//дальше просто удаляем обработчики кликов на ссылках внутри этого элемента, используя функцию выше
removeClickHandlers(cont);
// и замещаем для удобства прибывший текст изменённым текстом
result = cont.innerHTML;
// дальше result вставляем как обычный текст. там обработчиков нет.
vBulletin® v3.6.7, Copyright ©2000-2025, Jelsoft Enterprises Ltd. Перевод: zCarot