Работа 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, время: 06:26. |