Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > Как узнать координаты картинки которую я получаю с


Автор: vlad275 20.3.2008, 14:33
Как узнать координаты картинки которую я получаю с другого сайта и закрыть ее часть. Вот этот скрипт не работает. Что не правильно?

Код

<script language=JavaScript>
{
var x=0, y=0;
var obj = document.getElementById('id2');

while(obj) {
    x+=obj.offsetLeft;
    y+=obj.offsetTop;
    obj=obj.offsetParent;
 }
 
document.write("<IMG title='u.ru' SRC='images/logo-long.gif' STYLE='z-index:0;position:absolute;top:".y."px;left:".x."px' WIDTH=160 HEIGHT=34 border=0 HSPACE=0 VSPACE=0 alt='u.ru'");
}
</script>

Автор: bars80080 20.3.2008, 15:02
пытаемся закрыть обязательную рекламу?

наверно всё же неправильно будет писать document.write, лучше, если картинка уже будет на странице в скрытом слое ( { display: none; } ), а затем вы выставляете ей координаты и открываете

Автор: vlad275 20.3.2008, 23:22
Да, хочется закрыть.
Не знаете почему мой скрипт не работает?
Может есть работающий вариант?

Автор: bars80080 21.3.2008, 11:12
ну, скажем так
Код
<html><head>
<style>
#id2 { position: relative; top: 200px; left: 300px; background: #cccccc; }
#hidimg { display: none; position: absolute; top: 0px; left: 0px; }
#hidimg img { width: 160px; height: 34px; border: 0px; }
</style>
<script language=JavaScript>
function doit() {
    var x=0, y=0;
    var obj = document.getElementById('id2');
    while(obj) {
        x+=obj.offsetLeft;
        y+=obj.offsetTop;
        obj=obj.offsetParent; }
    //alert(x + ' ' + y);
    var himg = document.getElementById('hidimg');
    himg.style.left = x; himg.style.top = y;
    himg.style.display = 'block'; }
</script>
</head><body onload="doit();">
<div id="id2">sdg werg wergj lfg</div>
<div id="hidimg"><img src="zzz.jpg" title='u.ru' /></div>
</body></html>

Автор: vlad275 21.3.2008, 15:16
Большое спасибо!
Работает. Я немного упростил

Код


<html>
<head>
<script language=JavaScript>
function f1() {
    var x=0, y=0;
    var obj = document.getElementById('id2');
    x+=obj.offsetLeft;
    y+=obj.offsetTop;
    var obj3 = document.getElementById('id3');
    obj3.style.left = x; 
    obj3.style.top = y;
}
</script>
</head>
<body onLoad="f1();">

<div id="id2" style=position:relative;>
<img src="x.gif"  title='x.ru'>
</div>

<div id="id3" style=position:absolute;>
<img src="images/logo-long.gif" title='x.ru'>
</div>

</body>
</html>


Автор: vlad275 26.3.2008, 14:28
Новая напасть. Размер картинки которы я закрываю меняется в размерах. Как получить координаты левого верхнего угла этой картинки?

Автор: bars80080 26.3.2008, 14:52
не совсем понятно, вы ведь итак узнаёте координаты левого верхнего угла рекламки, если нужно узнать её ширину, то действуем также:
Код
<html><head>
<style>
#id2 { position: relative; top: 200px; left: 300px; width: 400px; background: #cccccc; }
#hidimg { display: none; position: absolute; /*top: 0px; left: 0px;*/ }
#hidimg img { width: 160px; height: 34px; border: 0px; display: block; }
</style>
<script language=JavaScript>
function doit() {
    var obj = document.getElementById('id2');
    x = obj.offsetLeft;
    y = obj.offsetTop;
    w = obj.offsetWidth;
    h = obj.offsetHeight;
    alert(w + ' ' + h);
    var himg = document.getElementById('hidimg');
    himg.style.left = x; himg.style.top = y;
    himg.style.display = 'block'; }
</script>
</head><body onload="doit();">
<div id="id2">sdg werg wergj lfg</div>
<div id="hidimg"><img src="zzz.jpg" title='u.ru' /></div>
</body></html>

Автор: vlad275 26.3.2008, 14:55
Спасибо!

Добавлено через 12 минут и 43 секунды
Какие-то чудеса :-(



Действительно, я получаю координаты кактинки, но почему-то когда размер полученной картинки меняется по ширине, та картинка которой я закрываю еузжает влево :-(

Код

    x+=obj.offsetLeft;
    y+=obj.offsetTop;
    var obj3 = document.getElementById('id3');
    obj3.style.left = x; 
   obj3.style.top = y+7;


Что это может быть?

Автор: bars80080 26.3.2008, 15:47
не знаю, это какие-то проблемы вёрстки (слои друг на лруга наезжают и оно всё дёргается)
у меня спокойно реагирует на изменение блока под ней.

надо посмотреть какпозиционирование ещё влияет

Автор: vlad275 26.3.2008, 15:52
А в этом скрипте вроде никакие слои не указаны?

Что интересно на одной страничке в которой таблица не меняет свою ширину все работает, а на другой, где ширина таблицы меняется - глючит позиционирование по X

Автор: bars80080 26.3.2008, 16:27
значит крышка привязана к перемещающемуся слою

смотрите, вот здесь у вас 
Код
<div id="id3" style=position:absolute;>

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

так что надо смотреть весь код. мысла больше гадать нет, так что-либо выкладывайте, либо одно из двух

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

Автор: vlad275 27.3.2008, 15:51
Возможно что у меня сначала указываются координаты картинки а ниже у меня <table> который не имеет фиксированной ширины, вот все и смещается?

Добавлено через 1 минуту и 15 секунд
Так и оказалось. Пофиксили!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)