Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   JS проверка наличия html кода (https://javascript.ru/forum/misc/29881-js-proverka-nalichiya-html-koda.html)

Dodik 15.07.2012 16:34

JS проверка наличия html кода
 
Здравствуйте уважаемые форумчане, помогите пожалуйста новичку. Мне нужно на JS в определенном файле проверить наличие куска html кода, если он есть необходимо вывести "одно сообщение", если его нет "другое сообщение".

lord2kim 15.07.2012 16:40

Цитата:

Сообщение от Dodik (Сообщение 188983)
Здравствуйте уважаемые форумчане, помогите пожалуйста новичку. Мне нужно на JS в определенном файле проверить наличие куска html кода, если он есть необходимо вывести "одно сообщение", если его нет "другое сообщение".

if (document.getElementById("name")) {
      alert("на странице присутствует элемент с атрибутом id = 'name'");
} else {
      alert("на странице отсутствует элемент с атрибутом id = 'name'");
}

Deff 15.07.2012 16:41

Цитата:

Сообщение от Dodik
в определенном файле

что за файл - расширение и с какого домена и где проверка - на сервере или в браузере у пользователя
Или это текущая страница ?

Dodik 15.07.2012 16:47

Цитата:

Сообщение от Deff (Сообщение 188985)
что за файл - расширение и с какого домена и где проверка - на сервере или в браузере у пользователя
Или это текущая страница ?

Спасибо за оперативность и внимание! Текущая страница, в ней необходима проверка на сервере.

Например на странице есть код <img src="/kartinka.jpg" width="1536" height="2048"> если его нет необходимо вывести сообщение, если есть другое сообщение.

lord2kim 15.07.2012 16:57

Цитата:

Сообщение от Dodik (Сообщение 188986)
Спасибо за оперативность и внимание! Текущая страница, в ней необходима проверка на сервере.

Например на странице есть код <img src="/kartinka.jpg" width="1536" height="2048"> если его нет необходимо вывести сообщение, если есть другое сообщение.

ну так я вам написал
if (document.getElementById("name")) {
      alert("на странице присутствует элемент с атрибутом id = 'name'");
} else {
      alert("на странице отсутствует элемент с атрибутом id = 'name'");
}

только нужно знать в каком элементе таковой код должен находиться и через соответствующие методы (getElement(s)) получить доступ к нему...

Dodik 15.07.2012 16:58

На странице написал примерный код <img src='/kartinka.jpg' width='1536' height='2048'>

и сделал как сказал lord2kim,

<script type="text/javascript">
if (document.getElementById("<img src='/kartinka.jpg' width='1536' height='2048'>")) {
alert("на странице присутствует элемент с атрибутом id = 'name'");
} else {
alert("на странице отсутствует элемент с атрибутом id = 'name'");
}
</script>

Но постоянно выводится сообщения "на странице отсутствует элемент с атрибутом id = 'name'"

Deff 15.07.2012 17:01

Нужно искать по img и src

lord2kim 15.07.2012 17:02

Цитата:

Сообщение от Dodik (Сообщение 188989)
На странице написал примерный код <img src='/kartinka.jpg' width='1536' height='2048'>

и сделал как сказал lord2kim,

<script type="text/javascript">
if (document.getElementById("<img src='/kartinka.jpg' width='1536' height='2048'>")) {
alert("на странице присутствует элемент с атрибутом id = 'name'");
} else {
alert("на странице отсутствует элемент с атрибутом id = 'name'");
}
</script>

Но постоянно выводится сообщения "на странице отсутствует элемент с атрибутом id = 'name'"

ненене...не правильно
у элемента должен быть атрибут id или name
<img src='/kartinka.jpg' width='1536' height='2048' name='name_img' id='id_img'>

после этого к элементу можно обращаться с помощью методов
document.getElementById("id_img");
document.getElementsByName("name_img")[0]

где 0 - это первый элемент в коллекции (массив, возвращаемый методом getElementsByName()), если img на странице первая с соответствующим атрибутом name
а если просто искать изображение, то при этом желательно знать его номер (N) на странице (начинается с 0)
document.getElementsByTagName("img")[N]

если же номер не известен, то в цикле перебирать все элементы коллекции img и проверять атрибут src на соответствие /kartinka.jpg

Dodik 15.07.2012 17:04

lord2kim,
Спасибо! буду пробовать

Dodik 15.07.2012 17:16

lord2kim,
Да так работает но если изменить src='/kartinka.jpg' то пишет что код установлен, пожалуйста напишите как проверить наличие строчки
<img src='/kartinka.jpg' name='name_img' id='id_img'>

буква в букву если не совпадает выводить соответствующие сообщения, на пхп знаю как сделать но нужно на скрипте. Если конечно можно, вы мне и так помогли, спасибо Вам, если не ответите не обижусь.

lord2kim 15.07.2012 17:23

Цитата:

Сообщение от Dodik (Сообщение 188993)
lord2kim,
Да так работает но если изменить src='/kartinka.jpg' то пишет что код установлен, пожалуйста напишите как проверить наличие строчки
<img src='/kartinka.jpg' name='name_img' id='id_img'>

буква в букву если не совпадает выводить соответствующие сообщения, на пхп знаю как сделать но нужно на скрипте. Если конечно можно, вы мне и так помогли, спасибо Вам, если не ответите не обижусь.

var img = document.getElementById("id_img");
if (img && img.src == "kartinka.jpg") {
    alert("элемент существует в нужном вам формате");
} else {
    alert("элемент не существует или существует в ином формате");
}

если элемент с атрибутом id (идентификатором) id_img существует и его атрибут src = kartinka.jpg (возможно тут придется прописывать полный путь к картинке, проверите...), то элемент существует в нужно вам варианте...
также, если требуется можно проверять его атрибуты ширины (width) и высоты (height) аналогичным образом

Dodik 15.07.2012 17:32

lord2kim,
Спасибо Вам, получилось!

Deff 15.07.2012 17:45

<img src='/kartinka.jpg' name='name_img' id='id_img'>
<script type="text/javascript">
 if (document.document.document.getElementById("id_img")) {
 alert("на странице присутствует элемент с атрибутом id = 'id_img'");
 } else {
 alert("на странице отсутствует элемент с атрибутом id = 'id_img'");
 }
 </script>

<img src='/kartinka.jpg' name='name_img' id='id_img2'>
<script type="text/javascript">
 if (document.document.document.getElementById("id_img")) {
 alert("на странице присутствует элемент с атрибутом id = 'id_img'");
 } else {
 alert("на странице отсутствует элемент с атрибутом id = 'id_img'");
 }
 </script>


id='id_img' Должен быть уникальным

Dodik 15.07.2012 17:58

Deff,
спасибо, теперь тоже самое нужно с ссылкой сделать: Делал по коду lord2kim, но туплю где то Deff не подскажешь?

<a href='http://javascript.ru' name='name_a' id='id_a'>http://javascript.ru</a>  
  
<script type="text/javascript">	  
var a = document.getElementById("id_a");
if (a && a.href == "http://javascript.ru") {
    alert("элемент существует в нужном вам формате");
} else {
    alert("элемент не существует или существует в ином формате");
}
</script>

Deff 15.07.2012 18:01

<a href='/link.jpg'  id='id_link'>Трям</a>
<script type="text/javascript">
 if (document.getElementById("id_link")) {
 alert("на странице присутствует элемент с атрибутом id = 'id_link'");
 } else {
 alert("на странице отсутствует элемент с атрибутом id = 'id_link'");
 }
 </script>


<a href='/link.jpg'  id='id_link2'>Трям</a>
<script type="text/javascript">
 if (document.getElementById("id_link")) {
 alert("на странице присутствует элемент с атрибутом id = 'id_link'");
 } else {
 alert("на странице отсутствует элемент с атрибутом id = 'id_link'");
 }
 </script>

Dodik 15.07.2012 18:07

Спасибо , работает, но если изменить /link.jpg показывает "на странице присутствует элемент с атрибутом id = 'id_link"


Тут у меня ошибка где не понимаю
<a href='http://javascript.ru' name='name_a' id='id_a'>http://javascript.ru</a>  
  
<script type="text/javascript">	  
var a = document.getElementById("id_a");
if (a && a.href == "http://javascript.ru") {
    alert("элемент существует в нужном вам формате");
} else {
    alert("элемент не существует или существует в ином формате");
}
</script>

vadim5june 15.07.2012 18:09

Цитата:

Сообщение от Deff (Сообщение 189014)
if (document.document.document.getElementById("id_lin k"))

что за document.document.document?

Deff 15.07.2012 18:11

vadim5june,
- Метод ленивого последовательного копирования рулит!

Deff 15.07.2012 18:11

Dodik,
Поправил(Ошибка перепечатки

vadim5june 15.07.2012 18:16

Цитата:

Сообщение от Dodik (Сообщение 189019)
Тут у меня ошибка где не понимаю

вместо
a.href == "http://javascript.ru"
попробуйте
a.getAttribute("href")=="http://javascript.ru"

Dodik 15.07.2012 18:17

Deff, спасибо, я удалил 2 document и заработало, только как выше сказал не катит такой вариант, если изменить линк то все равно пишет что есть код

Deff 15.07.2012 18:18

Цитата:

Сообщение от Dodik
/link.jpg

/link.jpg Ищет не по атрибуту - а по id="id_link"

Я уже говорил - что данному элементу присваиваете уникальный id и его и проверяете скриптом - на остальное скрипт плюёт

Т.е если есть линк - должен быть и уникальный id , который и проверяецо cкриптом (Точно такая же проверка и по картинкам

Dodik 15.07.2012 18:18

vadim5june, благодарен Вам все получилось как надо

Deff 15.07.2012 18:21

vadim5june,
Он на сервере - проверяет - легче проставить id к нужному линку или картинке - хотя эт лорд удобство выдумал скрипту -а не пользователю

По идее парсить в цикле а или img

vadim5june 15.07.2012 18:24

Цитата:

Сообщение от Deff (Сообщение 189031)
Он на сервере - проверяет - легче проставить id к нужному линку или картинке - хотя эт лорд удобство выдумал скрипту -а не пользователю
По идее парсить в цикле а или img

я только ошибку исправил

Deff 15.07.2012 18:47

vadim5june,
Мну про вообще... (мысли

lord2kim 15.07.2012 19:38

Цитата:

Сообщение от Deff (Сообщение 189031)
vadim5june,
Он на сервере - проверяет - легче проставить id к нужному линку или картинке - хотя эт лорд удобство выдумал скрипту -а не пользователю

ну я так и написал...или не догнал вашей мысли, Deff

Цитата:

Сообщение от Deff (Сообщение 189031)
По идее парсить в цикле а или img

я ж написал, либо по id, либо перебирать всю коллекцию img и/или a на странице...

bes 15.07.2012 19:41

Можно попробовать search в body, сам скрипт в head, хотя придётся подрабатывать если в строке есть символы &, ? ..
<head>
<script>
window.onload = function () {
  var str = '<div>';
  if (document.body.innerHTML.search(str) != -1) {
    alert('есть');
  } else {
    alert('нет');
  }
}
</script>
</head>

<body>
<div></div>
</body>


<head>
<script>
window.onload = function () {
  var str = '<div>';
  if (document.body.innerHTML.search(str) != -1) {
    alert('есть');
  } else {
    alert('нет');
  }
}
</script>
</head>

<body>

</body>

Dodik 15.07.2012 19:41

Простите меня, последний раз пишу :) , как

анкор ссылки проверить на совпадение?

Deff 15.07.2012 19:43

Dodik, Можа есть jQuery на странице ?
Тады проще

Dodik 15.07.2012 19:46

Цитата:

Сообщение от Deff (Сообщение 189072)
Dodik, Можа есть jQuery на странице ?
Тады проще

К сожалению только скрипт :no:

bes 15.07.2012 19:58

Для таких строк прокатит
<head>
<script>
window.onload = function () {
  var str = '<img src="/kartinka.jpg" width="1536" height="2048">';
  if (document.body.innerHTML.search(str) != -1) {
    alert('есть');
  } else {
    alert('нет');
  }
}
</script>
</head>

<body>
<img src="/kartinka.jpg" width="1536" height="2048">
</body>

bes 15.07.2012 20:32

Убрать ? и & можно как-нибудь так
<head>
<script>
window.onload = function () {
  var str1 = '<img src="http://javascript.ru/forum/image.php?u=19820&dateline=1334914235">';
  str1 = str1.replace(/\?/g, '').replace(/&/g, '&amp;');
  var str2 = document.body.innerHTML;
  str2 = str2.replace(/\?/g, '');

  if (str2.search(str1) != -1) {
    alert('есть');
  } else {
    alert('нет');
  }
}
</script>
</head>

<body>
<img src="http://javascript.ru/forum/image.php?u=19820&dateline=1334914235">
</body>

Deff 15.07.2012 20:35

bes,
В старых ие нет кавычек и буквы тегов - заглавные

bes 15.07.2012 20:48

Цитата:

Сообщение от Deff
bes,
В старых ие нет кавычек и буквы тегов - заглавные

Можно так, кавычки вроде не мешают (в IE7 работает)
<head>
<script>
window.onload = function () {
  var str1 = '<img src="http://javascript.ru/forum/image.php?u=19820&dateline=1334914235">';
  str1 = str1.toUpperCase().replace(/\?/g, '').replace(/&/g, '&AMP;');
  var str2 = document.body.innerHTML;
  str2 = str2.toUpperCase().replace(/\?/g, '');

  if (str2.search(str1) != -1) {
    alert('есть');
  } else {
    alert('нет');
  }
}
</script>
</head>

<body>
<img src="http://javascript.ru/forum/image.php?u=19820&dateline=1334914235">
</body>

Deff 15.07.2012 20:54

bes,
Последний - в ИЕ7 работает.

bes 15.07.2012 20:57

Цитата:

Сообщение от Deff
bes,
Последний - в ИЕ7 работает.

Ну да, запускаю в режиме совместимости, работает

bes 15.07.2012 21:23

Остаётся вопрос: почему в строке str1 & заменяется, а в str2 - нет (заменяется на amp;, котрый нужно дополнительно убирать?
<head>
<script>
window.onload = function () {
  var str1 = '<img src="http://javascript.ru/forum/image.php?u=19820&dateline=1334914235">';
  str1 = str1.replace(/&/g, '');
  var str2 = document.body.innerHTML;
  str2 = str2.replace(/&/g, '');
  alert(str1 +'\n'+str2);
  str2 = str2.replace(/amp;/g, '');
  alert(str1 +'\n'+str2);
}
</script>
</head>

<body>
<img src="http://javascript.ru/forum/image.php?u=19820&dateline=1334914235">
</body>


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