Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 23.11.2011, 16:09
Новичок на форуме
Отправить личное сообщение для knyazsergei Посмотреть профиль Найти все сообщения от knyazsergei
 
Регистрация: 29.04.2010
Сообщений: 6

Переделать ссылку или вырубить js код!
{closed}

Последний раз редактировалось knyazsergei, 12.12.2012 в 01:52. Причина: закрыто
Ответить с цитированием
  #2 (permalink)  
Старый 23.11.2011, 18:14
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

после загружки страницы замените эту функцию пустышкой
jQuery(function(){ window.spages = function(){} });
Ответить с цитированием
  #3 (permalink)  
Старый 23.11.2011, 18:39
Новичок на форуме
Отправить личное сообщение для knyazsergei Посмотреть профиль Найти все сообщения от knyazsergei
 
Регистрация: 29.04.2010
Сообщений: 6

{closed}

Последний раз редактировалось knyazsergei, 12.12.2012 в 01:52.
Ответить с цитированием
  #4 (permalink)  
Старый 23.11.2011, 19:48
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

хм. ну я на юкозе изменял их функции переназначением

стоп. вы хотите редирект убрать? тогда всё равно придётся её переопределить. правда, теперь не пустышку вставлять.

развёрнутый код вашей функции

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)
    });
}
Ответить с цитированием
  #5 (permalink)  
Старый 23.11.2011, 20:15
Новичок на форуме
Отправить личное сообщение для knyazsergei Посмотреть профиль Найти все сообщения от knyazsergei
 
Регистрация: 29.04.2010
Сообщений: 6

{closed}

Последний раз редактировалось knyazsergei, 12.12.2012 в 01:52.
Ответить с цитированием
  #6 (permalink)  
Старый 23.11.2011, 22:04
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

я знаю. я сам имел дела с этим юкозом.

(к примеру, изменял вывод видео на странице)

тогда можно поудалять обработчики клика на ссылках

(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 вставляем как обычный текст. там обработчиков нет.

Последний раз редактировалось melky, 23.11.2011 в 22:17.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Скрыть ссылку на js Googert Общие вопросы Javascript 10 21.02.2012 17:29
как привязать ссылку с Html страницы на вынесенный в отдельную папку js скрипт? TIIIMOXAN Общие вопросы Javascript 2 09.11.2009 19:23
Что выбрать XML или JSON для передачи Ajax - ом из PHP в JS Gozar Общие вопросы Javascript 20 16.08.2009 23:36
Загрузка дополнительного js кода с сервера Anonymous2008 Общие вопросы Javascript 5 20.11.2008 12:33
Стоит ли пользоваться библиотеками или лучше писать свой код? lancer Общие вопросы Javascript 5 24.03.2008 19:31