Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 02.11.2014, 23:05
Новичок на форуме
Отправить личное сообщение для Al Jo Посмотреть профиль Найти все сообщения от Al Jo
 
Регистрация: 02.11.2014
Сообщений: 3

Как запретить переход по ссылкам?
Уважаемые гуру.

Возможно ли, с помощью скрипта, запретить переход по ссылкам в мобильном браузере (iOS)?.

Есть такой скрипт:

SingleTapDetector = function(element, handler) {
this.element = element;
this.handler = handler;

element.addEventListener('touchstart', this, false);
};

SingleTapDetector.prototype.handleEvent = function(event) {
switch (event.type) {
case 'touchstart': this.onTouchStart(event); break;
case 'touchmove': this.onTouchMove(event); break;
case 'touchend': this.onTouchEnd(event); break;
}
};

SingleTapDetector.prototype.onTouchStart = function(event) {
this.element.addEventListener('touchend', this, false);
document.body.addEventListener('touchmove', this, false);

this.startX = this.currentX = event.touches[0].clientX;
this.startY = this.currentY = event.touches[0].clientY;
this.startTime = new Date().getTime();
};

SingleTapDetector.prototype.onTouchMove = function(event) {
this.currentX = event.touches[0].clientX;
this.currentY = event.touches[0].clientY;
};

SingleTapDetector.prototype.onTouchEnd = function(event) {
var that = this;

// Has there been one or more taps in this sequence already?
if (this.tapTimer) {
// Reset the timer to catch any additional taps in this sequence
clearTimeout(this.tapTimer);
this.tapTimer = setTimeout(function() {
that.tapTimer = null;
}, 300);
} else {
// Make sure the user didn't move too much
if (Math.abs(this.currentX - this.startX) < 4 &&
Math.abs(this.currentY - this.startY) < 4) {
// Make sure this isn't a long press
if (new Date().getTime() - this.startTime <= 300) {
// Make sure this tap wasn't part of a selection event
if (window.getSelection() + '' == '') {
// Make sure this tap is in fact a single tap
this.tapTimer = setTimeout(function() {
that.tapTimer = null;

// This is a single tap
that.handler(event);
}, 300);
}
}
}
}
};

С помощью скрипта я могу получить новый адрес документа, а хотелось бы получать именно url объекта тапа.

new SingleTapDetector(document.body, function(event) {
document.location = "internal://" + document.URL;
});

В ДОПОЛНЕНИЕ, я хочу отключить, собственно, переход по ссылке и обрабатывать переход уже по своему сценарию в iOS.

new SingleTapDetector(document.body, function(event) {
document.location = "internal://" + document.URL;
return false; <--- не работает!
});

Укажите направление. Спасибо
Ответить с цитированием
  #2 (permalink)  
Старый 03.11.2014, 01:41
Аватар для Safort
Профессор
Отправить личное сообщение для Safort Посмотреть профиль Найти все сообщения от Safort
 
Регистрация: 23.12.2013
Сообщений: 1,856

А так?
new SingleTapDetector(document.body, function(event) {
    event.preventDefault();
    document.location = "internal://" + document.URL;
});
Ответить с цитированием
  #3 (permalink)  
Старый 03.11.2014, 02:33
Новичок на форуме
Отправить личное сообщение для Al Jo Посмотреть профиль Найти все сообщения от Al Jo
 
Регистрация: 02.11.2014
Сообщений: 3

Не работает

я могу заменить все ссылки на мусор, например вот так:

var links = document.getElementsByTagName("a");
for (var i = 0; i < links.length; i++) {
links[i].setAttribute("href", "blabla");
}

Тогда переход по ссылке не происходит... Но как сохранить их (ссылки) до замены в массив и потом сравнить кликнутый элемент с элементом из этого массива?
Ответить с цитированием
  #4 (permalink)  
Старый 03.11.2014, 04:04
Аватар для Vlasenko Fedor
Профессор
Отправить личное сообщение для Vlasenko Fedor Посмотреть профиль Найти все сообщения от Vlasenko Fedor
 
Регистрация: 13.03.2013
Сообщений: 1,572

document.links содержит все ссылки. Не у всех ссылок есть атрибут href
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как вы относитесь к наркоманам? Maxmaxmaximus7 Оффтопик 7 05.02.2014 13:29
Как запретить js код. Vladislav Общие вопросы Javascript 3 23.02.2013 17:03
Как запретить применение css при изменении окна браузера east (X)HTML/CSS 7 12.10.2012 21:23
Как реализовать переход с одной страницы на другую с помощью клавиш "стрелок" bazilio2010 Общие вопросы Javascript 6 13.11.2011 23:58
Как запретить уход из фрейма в top-окно? sturm Общие вопросы Javascript 6 20.04.2008 04:20