Работа JavaScript в определенном DIV
Прошу помощи у знающих, приведу сразу пример:
на сайте подключен js код который при копировании текста с сайта добаляет ссылку на источник, работой скрипта доволен, но есть одно НО данный скрипт добаляет ссылку на источник к любому тексту скопированому с сайта, НУЖНО сделать чтобы данный скрипт отрабатывал при условии если текст копируется со станицы заключенной в div к примеру <div class="my_text">текст текст текст</div> ... вероятно там небольшое условие, но с моими зананиями JS это трудно заранее спасибо всем откликнувшимся :thanks: |
даже если делать так document.getElementById('post');
то скрипт отрабатывает на всей странице если на странице есть div id="post" |
Приведите код скрипта, устанавливающего ссылку на источник.
|
function addLink() { var body_element = document.getElementsByTagName('body')[0]; var selection; selection = window.getSelection(); var pagelink = "<br/>Источник: "+window.location+""; var copytext = selection + pagelink; var newdiv = document.createElement('div'); newdiv.style.position='absolute'; newdiv.style.left='-99999px'; body_element.appendChild(newdiv); newdiv.innerHTML = copytext; selection.selectAllChildren(newdiv); window.setTimeout(function() { body_element.removeChild(newdiv); },0); } document.oncopy = addLink; |
Боюсь, код вашего скрипта не кросс-браузерный, хотя может я ошибаюсь. Вот переделал ваш скрипт, теперь вы можете вызвать ф-цию addLink, передав ей имя нужного класса элементов.
<!doctype html> <html> <head> <title>;)</title> <meta charset="utf-8"> <style type="text/css"></style> </head> <body> <div class="text1">Этот текст скопируется без ссылки</div> <div class="text2">И этот текст скопируется без ссылки</div> <div class="my_text">А этот текст скопируется со ссылкой</div> <script type="text/javascript"> // Определение ф-ции var addLink = (function (G) { return function (targetClass) { G.document.oncopy = function () { var body_element = document.body, selection = window.getSelection(), pagelink = "<br/>Источник: " + window.location, copytext = selection + pagelink, newdiv = document.createElement('div'); if (selection.anchorNode.parentNode && selection.anchorNode.parentNode.className && selection.anchorNode.parentNode.className !== targetClass) { return; } newdiv.style.position = "absolute"; newdiv.style.left = "-99999px"; body_element.appendChild(newdiv); newdiv.innerHTML = copytext; selection.selectAllChildren(newdiv); window.setTimeout(function() { body_element.removeChild(newdiv); }, 0); }; }; } (this)); // Вызов. // Вызывать 1 раз на странице! // Передавать имя класса элементов, при копировании из которых нужно // Вставлять ссылку. addLink("my_text"); </script> </body> </html> |
Огромное вам человеческое спасибо! :thanks:
сталкнулся со следующей проблемой, в div есть вложеный div с id новости, получается <div class="my_text"><div class="news_777"> ... таким образом не отрабатывает скрипт так как в диве еще один див |
узнать class встроенного дива можно, поколупать дивгло и передавать его в скрипт, хотелось бы не размахивать блоки JS в каждой новости а просто подключать его строкой <script type="text/javascript" src=" ... в посте
|
Держите :)
<!doctype html> <html> <head> <title>;)</title> <meta charset="utf-8"> <style type="text/css"></style> </head> <body> <div class="text1">Этот текст скопируется без ссылки</div> <div class="text2">И этот текст скопируется без ссылки</div> <div class="my_text"> <div class="news_777"> А этот текст скопируется со ссылкой </div> </div> <div class="my_text"> <div class="news_77"> <div> <div class="news_777"> И этот текст скопируется со ссылкой </div> </div> </div> </div> <script type="text/javascript"> // Определение ф-ции var addLink = (function (G) { return function (targetClass) { G.document.oncopy = function () { var body_element = this.body, selection = G.getSelection(), pagelink = "<br/>Источник: " + G.location, copytext = selection + pagelink, newdiv = this.createElement('div'), checkNode = function (node) { while (null !== node) { if (node.className && node.className === targetClass) { return true; } node = node.parentNode || null; } return false; }; if (false === checkNode(selection.anchorNode.parentNode)) { return; } newdiv.style.position = "absolute"; newdiv.style.left = "-99999px"; body_element.appendChild(newdiv); newdiv.innerHTML = copytext; selection.selectAllChildren(newdiv); G.setTimeout(function() { body_element.removeChild(newdiv); }, 0); }; }; } (this)); // Вызов. // Вызывать 1 раз на странице! // Передавать имя класса элементов, при копировании из которых нужно // Вставлять ссылку. addLink("my_text"); </script> </body> </html> |
:thanks: спасибо вам добрый человек!
|
рад был помочь :)
|
Часовой пояс GMT +3, время: 01:34. |