Javascript-форум (https://javascript.ru/forum/)
-   Opera, Safari и др. (https://javascript.ru/forum/css-html-browser/)
-   -   Найти и кликнуть по ссылке. (https://javascript.ru/forum/css-html-browser/53464-najjti-i-kliknut-po-ssylke.html)

NoobJs 05.02.2015 00:53

Найти и кликнуть по ссылке.
 
Всем привет. В общем есть исходный код страницы:
...
<a href="1.php">Ссылка 1</a><br/><a href="2.php">Ссылка 2</a><br/>
...
Никак не могу написать юзерскрипт, который по названию(!), например "Ссылка 1" будет искать наличие такой ссылки на странице и если она есть, то делать по ней пеход. Заранее спасибо)

ksa 05.02.2015 08:35

Цитата:

Сообщение от NoobJs
Никак не могу написать юзерскрипт, который по названию(!), например "Ссылка 1" будет искать наличие такой ссылки на странице и если она есть, то делать по ней пеход

Как вариант...

<!DOCTYPE html>
<html ng-app>
<head>
<script src='http://code.jquery.com/jquery-latest.js'></script>
<!--
<script src="http://code.angularjs.org/1.1.4/angular.min.js"></script>
<link rel='stylesheet type=text/css href=tmp.css' />
-->
<style type='text/css'>
.on {
	border: 1px solid red;
}
</style>
<script type='text/javascript'>
$(function(){
	var val='Ссылка 1';
	//$('a:contains("'+val+'")').get(0).click();
	$('a:contains("'+val+'")').addClass('on');
});
</script>
</head>
<body> 
<a href="1.php">Ссылка 1</a><br/>
<a href="2.php">Ссылка 2</a><br/>
</body>
</html>

NoobJs 05.02.2015 18:20

Спасибо, но это jquery, как его подключить в скрипте, а не на странице? Плюс к тому клик не происходит, только выделение ссылки, если я правильно понял

freee 05.02.2015 21:14

<html>
<head>
</head>


<body>

<a href='http://ya.ru'>link1</a>
<a href='http://www.google.ru'>link2</a>
<a href='http://javascript.ru'>link3</a>

<script>
if(address=document.body.innerHTML.match(/(?=[^<]+link3)http:\/\/[^"']+/)) location=address[0]
</script>
</body>
  
</html>

ksa 06.02.2015 09:17

Цитата:

Сообщение от NoobJs
Плюс к тому клик не происходит, только выделение ссылки, если я правильно понял

А убрать комментарий уже никак не получается? :lol:
Цитата:

Сообщение от ksa
//$('a:contains("'+val+'")').get(0).click();


NoobJs 15.02.2015 14:32

ksa, крутой программист, спасибо, плюсик тебе в репу). Для решения задачи взял за основу именно твой код) freee , Тоже спасибо.
Но вот ещё есть несколько вопросов, буду рад, если кому не трудно будет написать ответ.
1. Как ко всему этому добавить if-else? Конкретнее.
Есть страница, на ней 2 ссылки, на которые надо кликнуть. Этот скрипт кликнет на первую и всё.
<html>
<head>
<script src='http://code.jquery.com/jquery-latest.js'></script>
<!--
<script src="http://code.angularjs.org/1.1.4/angular.min.js"></script>
<link rel='stylesheet type=text/css href=tmp.css' />
-->
<script type='text/javascript'>
$(function(){
    var val='Ссылка 1';
    var val2 = 'Ссылка 2';
    //$('a:contains("'+val+'")').get(0).click();
    $('a:contains("'+val+'")').css('border', '1px solid green');
     //$('a:contains("'+val2+'")').get(0).click();
    $('a:contains("'+val2+'")').css('border', '1px solid green');
});
</script>
</head>
<body>
<a href="1.php">Ссылка 1</a><br/>
<a href="2.php">Ссылка 2</a><br/>
<a href="3.php">Ссылка 3</a><br/>
</body>
</html>

В общем если есть ссылка 3, надо кликнуть на ссылку 1, а если её нет, кликнуть на вторую.

2. Есть код.
<font color="red">текст</font>

Как из этого кода вытянуть слово "red" и присвоить переменной?

3. Найти в html коде слово между скобками, не зная самого слова и присвоить переменной.

4. Можно ли тут использовать || (или) и если можно то как?
$( "div:contains('123')" ).append('lol');

То есть чтобы получилось что-то типа такое(не работает):
$( "div:contains('123' || '456')" ).append('lol');

То есть чтобы дописывало после 123 или 456 lol

NoobJs 15.02.2015 14:44

Вот ещё, забыл.
Как вот по названию ссылки не кликнуть по ней, а взять её url и присвоить переменной?

ksa 16.02.2015 11:18

Цитата:

Сообщение от NoobJs
если есть ссылка 3, надо кликнуть на ссылку 1, а если её нет, кликнуть на вторую

Как вариант...

<html>
<head>
<script src='http://code.jquery.com/jquery-latest.js'></script>
<!--
<script src="http://code.angularjs.org/1.1.4/angular.min.js"></script>
<link rel='stylesheet type=text/css href=tmp.css' />
-->
<script type='text/javascript'>
$(function(){
    var val='Ссылка 1';
    var val2 = 'Ссылка 2';
	if ($('a:contains("Ссылка 3")').length>0) {
		//$('a:contains("'+val+'")').get(0).click();
		$('a:contains("'+val+'")').css('border', '1px solid green');
	} else {
		 //$('a:contains("'+val2+'")').get(0).click();
		$('a:contains("'+val2+'")').css('border', '1px solid green');
	};
});
</script>
</head>
<body>
<a href="1.php">Ссылка 1</a><br/>
<a href="2.php">Ссылка 2</a><br/>
<a href="3.php">Ссылка 3</a><br/>
</body>
</html>

ksa 16.02.2015 11:25

Цитата:

Сообщение от NoobJs
Есть код.
<font color="red">текст</font>

Как из этого кода вытянуть слово "red" и присвоить переменной?

Для начала нужно найти тот font, а это сильно зависит от твоей разметки. ;)
Потом можно сделать так

<!DOCTYPE html>
<html ng-app>
<head>
<script src='http://code.jquery.com/jquery-latest.js'></script>
<!--
<script src="http://code.angularjs.org/1.1.4/angular.min.js"></script>
<link rel='stylesheet type=text/css href=tmp.css' />
-->
<style type='text/css'>
</style>
<script type='text/javascript'>
$(function(){
	var clr=$('font').eq(0).attr('color');
	alert(clr);
});
</script>
</head>
<body> 
<font color="red">текст</font>
<font color="green">текст</font>
</body>
</html>

ksa 16.02.2015 11:35

Цитата:

Сообщение от NoobJs
Найти в html коде слово между скобками, не зная самого слова и присвоить переменной.

Взять тот "html код"... А далее как в примере

var str='Тут (мой) весь (html) код';
var a=str.match(/(\([\s\S]*?)(?=\))/g)
for (var i=0; i<a.length; i++) {
	a[i]=a[i].split('(')[1];
};
alert(a);

ksa 16.02.2015 11:37

Цитата:

Сообщение от NoobJs
Можно ли тут использовать || (или) и если можно то как?
$( "div:contains('123')" ).append('lol');

То есть чтобы получилось что-то типа такое(не работает):
$( "div:contains('123' || '456')" ).append('lol');

Селектор это константа. Твой вариант сильно смахивает на конструкцию

$( "div:contains('123')" ).append('lol');
$( "div:contains('456')" ).append('lol');

Либо совсем непонятно какую именно идею ты собираешся реализовать в коде... :D

ksa 16.02.2015 11:42

Цитата:

Сообщение от NoobJs
Как вот по названию ссылки не кликнуть по ней, а взять её url и присвоить переменной?

Это как с color...

<!DOCTYPE html>
<html ng-app>
<head>
<script src='http://code.jquery.com/jquery-latest.js'></script>
<!--
<script src="http://code.angularjs.org/1.1.4/angular.min.js"></script>
<link rel='stylesheet type=text/css href=tmp.css' />
-->
<style type='text/css'>
</style>
<script type='text/javascript'>
$(function(){
	var url=$('a:contains("Test")').eq(0).attr('href');
	alert(url);
});
</script>
</head>
<body> 
<a href='url_ссылки'>Test</a>
</body>
</html>

NoobJs 18.02.2015 14:50

ksa, ништяк, спасибо)) Помог реально. Но вот ещё есть вопрос, извини что так много спрашиваю ))
Есть код
<button type="submit" name="knopka" value="3">Подтвердить</button>

Вот, как нажать на эту кнопку скриптом? По value или по названию, хз как, уже все форумы облазил, ниче стоящего не нашел.

ksa 18.02.2015 15:20

Цитата:

Сообщение от NoobJs
как нажать на эту кнопку скриптом?

Поскольку та кнопка type="submit", достаточно найти ее форму (objForm) и запустить метод формы

objForm.submit();

ksa 18.02.2015 15:21

Цитата:

Сообщение от NoobJs
как нажать на эту кнопку скриптом?

Либо сделать по аналогии с примером
http://javascript.ru/forum/css-html-...tml#post355065

ksa 18.02.2015 15:22

Цитата:

Сообщение от NoobJs
извини что так много спрашиваю

Это потому, что ты совсем не занимаешся разметкой и не читаешь книжки. :D


Часовой пояс GMT +3, время: 10:54.