Pracuję nad aplikacją, która umożliwia oznaczanie bezpośrednio na zdjęciach za pomocą kliknięcia (np. Facebook, flickr i inni). Nie mogę jednak zarejestrować odpowiednich współrzędnych dla kliknięcia zdjęcia. Problem polega na tym, że współrzędne x wydają się być bezwzględną x odległością kliknięcia w oknie przeglądarki (a nie na zdjęciu), natomiast współrzędne y są często ujemne lub niewiarygodnie małe (ujemne u góry, małe u dołu). Są to wartości, które otrzymuję po kliknięciu w pobliżu lewego górnego rogu (które powinno się zarejestrować jako 0 lub w pobliżu 0: "x" => "219", "y" => "- 311" ... 219 wydaje się być w odpowiednim momencie mierząc odległość od lewej strony okna przeglądarki, ale odległość powinna znajdować się w obszarze zdjęcia)Uzyskaj dokładną pozycję kliknięcia na połączonym obrazie za pomocą jquery
Aktualnie przechwytuję zdarzenia kliknięcia i współrzędne na zdjęciu za pomocą zwykłego linku (link zawiera inne istotne dane zdjęć) i robienie matematyki (te same obliczenia, które były używane w dokumentach jquery) przed przekazaniem go do mojej aplikacji rails. Wątpię, czy metoda ma wiele wspólnego z błędnymi wartościami, chociaż podejrzewam, że może to być spowodowane matematyką lub jakimś dziwactwem css. W obu przypadkach jestem absolutnie zdumiony.
JS:
$(document).ready(function(){
clickTag();
});
function clickTag(){
$("#taggable").click(function(e){
var x = e.pageX - this.offsetLeft;
var y = e.pageY - this.offsetTop;
var url = $(this).attr("href");
courl = url + '&x=' + x + '&y=' + y;
$.ajax({
type:"GET",
url: courl,
dataType:"script"
});
return false;
});
}
CSS:
`<div class="content">
<div id="image_container" style="position:relative;width:405px;float:left;height:600px;>
<a href="/tags/new_xy?look_id=188&photo_id=1150" id="taggable" style="position:relative;top:0;left:0px;"><img alt="taggable_image" src="taggable_image.jpg" /></a>
<div class="tags" id="tags"></div>
</div>
</div>`
hrm, wydaje się, że rozwiązuje to dla wartości x, chociaż wartość y jest nadal ujemna. {"x" => "1", "y" => "- 602"} – Optimate
spróbuj wypisać e.pageY i $ (this) .offset(). Po lewej, aby zobaczyć, który z nich jest niepoprawny, może to pomóc w rozwiązaniu tego problemu. –
Możesz również zamieścić css, który wpływa na obraz, a jego rodzice: –