Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 22.10.2013, 20:17
Новичок на форуме
Отправить личное сообщение для developer Посмотреть профиль Найти все сообщения от developer
 
Регистрация: 25.07.2013
Сообщений: 5

Как назначить событие при фокусе на все ссылки —сразу производить переход (по ссылке)
Хочу всем ссылкам с атрибутом href (потомучто есть и якоря, да и onfocus к ним не применяется) в цикле назначить событие при получении фокуса — сразу перейти по этой ссылке. Пробовал вот так:
var myFocus = document.getElementsByTagName('a');
for(var y = 0; y <= myFocus.length; y++){
	if((myFocus.item(y)) && (myFocus.item(y).parentNode.nodeName == 'LI') && (myFocus.item(y).getAttribute('href'))){
		var hash2 = myFocus.item(y).getAttribute('href');
		myFocus.item(y).setAttribute('onfocus', "location.replace(" + location.host + location.pathname+")");
	}
}

и вот так:
...
if((myFocus.item(y)) && (myFocus.item(y).parentNode.nodeName == 'LI') && (myFocus.item(y).getAttribute('href'))){
		hash = myFocus.item(y).getAttribute('href');
		myFocus.item(y).onfocus = function(){
			myFocus.item(y).click();
		}
	}
...

Глупости, конечно, но все же
Ответить с цитированием
  #2 (permalink)  
Старый 25.10.2013, 07:47
Аватар для ilyas->
Кандидат Javascript-наук
Отправить личное сообщение для ilyas-> Посмотреть профиль Найти все сообщения от ilyas->
 
Регистрация: 19.06.2013
Сообщений: 135

Тоже с подобным столкнулся, каково же решение ?
Ответить с цитированием
  #3 (permalink)  
Старый 25.10.2013, 13:35
Аватар для Vlasenko Fedor
Профессор
Отправить личное сообщение для Vlasenko Fedor Посмотреть профиль Найти все сообщения от Vlasenko Fedor
 
Регистрация: 13.03.2013
Сообщений: 1,572

Вот так можно
<!DOCTYPE HTML>
<html>
  
  <head></head>
  
  <body>
    <a href="http://mail.ru">Mail.ru</a>
    <a href="http://test.ru">Test.ru</a>
    <script>
      window.onload = function () {
        var links = document.getElementsByTagName('a');
        for (var i = 0, max = links.length; i < max; i++) {
          links[i].onmouseover = function () {
            this.href && (document.location.href = this.href);
          }
        }
      };
    </script>
  </body>

</html>
Ответить с цитированием
  #4 (permalink)  
Старый 25.10.2013, 21:03
Аватар для ruslan_mart
Профессор
Отправить личное сообщение для ruslan_mart Посмотреть профиль Найти все сообщения от ruslan_mart
 
Регистрация: 30.04.2012
Сообщений: 3,018

window.onload = function() {
   var a = document.querySelectorAll('a[href]'), i;
   for(i=0; i<a.length; i++) a[i].onmouseover = function() {
      document.location = this.href;
   });
}
Ответить с цитированием
  #5 (permalink)  
Старый 27.10.2013, 13:35
Новичок на форуме
Отправить личное сообщение для developer Посмотреть профиль Найти все сообщения от developer
 
Регистрация: 25.07.2013
Сообщений: 5

Спасибо за ответы, это нужно было для одного скрипта для шпаргалки. Скрипт сортирует абзацы и выводит их в отсортированном виде, при смене буквы выводит якорь на эту букву, а в начале страницы выводит весь алфавит для быстрой навигации по шпаргалке. Результат можно посмотреть здесь. Выкладываю исходники (может кому-то пригодится).

Дан например HTML:
<body>
...
<p>О.п.с.т.по с.с п. <strong>(Возможность трансформирования)</strong></p>
<p>В б.с.м.п.ч.с.т.д.э.у.50Гц. У.ч. <strong>(Неприемлемо, так как при этом становится заметным мигание ламп накаливания)</strong></p>
<p>П.ч.с.т.д.э.у.50Гц н. <strong>(т.к. за счет увеличения ЭДС самоиндукции ухудшается режим передачи энергии по проводам)</strong></p>
<p>О.е.м.п.в с.СИ <strong>(Вебер)</strong></p>
<p>П.м.п.со в.в.к. <strong>(&Psi; = &pi;Ф<sub>1</sub>)</strong></p>
...
</body>


Скрипт:
var find = function(array, value){
	for(var i=0; i < array.length; i++){
		if (array[i] === value) return i;
	}
	return -1;
}
function winWidth(){
	document.body.style.width = window.innerWidth;
}
window.onresize = winWidth;
//В момент полной загрузки страницы
window.onload = function(){
	//Назначение ширины окна = ширине экрана телефона
	document.body.style.width = screen.availWidth;
	//Сортировка по алфавиту
	var p = document.getElementsByTagName('p');
	var paragraphs = new Array();
	var alphabet = new Array();
	for(var i = 0; i <= p.length; i++){
		if((p[i]) && (p.item(i).hasChildNodes())){
			paragraphs.push(p[i].innerHTML);
			if((p.item(i).firstChild.nodeValue) && (find(alphabet, p.item(i).firstChild.nodeValue.substring(0, 1)) == -1))
				alphabet.push(p.item(i).firstChild.nodeValue.substring(0, 1));
		}
	}
	alphabet = alphabet.sort(); //Сортировка алфавита
	paragraphs = paragraphs.sort(); //Сортировка параграфов
	//Вывод алфавита
	var ul = document.createElement('ul');
	ul.className = 'alphabet';
	for(var x = 0; x <= alphabet.length; x++){
		if(alphabet[x] == undefined) continue;
		var li = document.createElement('li');
		var myLink = document.createElement('a');
		var href = '#w' + x;
		myLink.setAttribute('href', href);
		myLink.appendChild(document.createTextNode(alphabet[x]));
		li.appendChild(myLink);
		ul.appendChild(li);
	}
	document.body.insertBefore(ul, document.getElementsByTagName('p').item(0));
	//Иницилизация служебных переменных
	var firstSymbol = new String();
	var myAnchor = new String();
	var counter = new Number(0);
	//Создание элементов навигации
	var begin = document.createElement('a');
	begin.setAttribute('href', '#begin');
	begin.appendChild(document.createTextNode('в начало'));
	var end = document.createElement('a');
	end.setAttribute('href', '#end');
	end.appendChild(document.createTextNode('в конец'));
	var nav = document.createElement('div');
	nav.className = 'nav';
	nav.appendChild(begin);
	nav.appendChild(end);
	//Вставка навигации и сортировка
	for(var i in p){
		if((p[i]) && (paragraphs[i]) && (p.item(i).hasChildNodes()) && (p.item(i).firstChild.nodeType == 3)){
			if((paragraphs[i].toString().substring(0, 1) !== firstSymbol) && (counter < alphabet.length)){
				firstSymbol = paragraphs[i].toString().substring(0, 1);
				myAnchor = 'w' + counter;
				var word = document.createElement('a');
				word.setAttribute('name', myAnchor);
				word.appendChild(document.createTextNode(' = ' + firstSymbol + ' = '));
				nav.insertBefore(word, nav.childNodes.item(1));
				document.body.insertBefore(nav.cloneNode(true), p.item(i));
				nav.removeChild(nav.childNodes[1]);
				counter++;
			}
			p[i].innerHTML = paragraphs[i];
		}
	}
	//Добавление якорей
	var beginAnchor = document.createElement('a');
	beginAnchor.setAttribute('name', 'begin');
	var endAnchor = document.createElement('a');
	endAnchor.setAttribute('name', 'end');
	document.body.insertBefore(beginAnchor, document.body.firstChild);
	document.body.appendChild(endAnchor);
	//Назначение события при фокусе
	var myFocus = document.getElementsByTagName('a');
	for(var y = 0; y <= myFocus.length; y++){
		if((myFocus.item(y)) && (myFocus.item(y).parentNode.nodeName == 'LI') && (myFocus.item(y).getAttribute('href'))){
			var hash2 = myFocus.item(y).getAttribute('href');
			//myFocus.item(y).setAttribute('onfocus', "location.replace(" + location.host + location.pathname+")");
		}
	}
	//Переход по ссылке при получении фокуса
	var links = document.getElementsByTagName('a');
	for (var i = 0, max = links.length; i < max; i++){
		links[i].onfocus = function(){
			this.href && (document.location.href = this.href);
		}
	}
}
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как сделать, чтобы при наведении на кнопку справа от нее появлялись текстовые ссылки? Tass Общие вопросы Javascript 7 17.02.2011 09:06
Название ячейки таблицы Questioner Общие вопросы Javascript 6 16.02.2011 09:58
При нажатии на ссылку браузер запоминает как переход на др страничку mff AJAX и COMET 13 17.02.2010 21:46
постоянное повторяющееся событие при mouseover. как? greysells jQuery 2 01.02.2010 13:37
глюк форума Gvozd Сайт Javascript.ru 11 18.03.2009 14:37