Sự khác biệt giữa screenX/ Y, clientX/ Yvà pageX/ là Ygì?
Ngoài ra đối với iPad Safari, các tính toán có giống như trên máy tính để bàn hay HOẶC có một số khác biệt do chế độ xem không?
Sẽ thật tuyệt nếu bạn có thể chỉ cho tôi một ví dụ.
Sự khác biệt giữa screenX/ Y, clientX/ Yvà pageX/ là Ygì?
Ngoài ra đối với iPad Safari, các tính toán có giống như trên máy tính để bàn hay HOẶC có một số khác biệt do chế độ xem không?
Sẽ thật tuyệt nếu bạn có thể chỉ cho tôi một ví dụ.
Câu trả lời:
Trong JavaScript:
pageX, pageY, screenX, screenY, clientX, Và clientYtrả về một số trong đó cho biết số vật lý “pixel CSS” một điểm là từ điểm tham chiếu. Điểm sự kiện là nơi người dùng nhấp vào, điểm tham chiếu là một điểm ở phía trên bên trái. Các thuộc tính này trả về khoảng cách ngang và dọc từ điểm tham chiếu đó.
pageXvà pageY:
Liên quan đến phía trên bên trái của khu vực nội dung được hiển thị đầy đủ trong trình duyệt. Điểm tham chiếu này nằm dưới thanh URL và nút quay lại ở phía trên bên trái. Điểm này có thể là bất cứ nơi nào trong cửa sổ trình duyệt và thực sự có thể thay đổi vị trí nếu có các trang có thể cuộn được nhúng trong các trang và người dùng di chuyển một thanh cuộn.
screenXvà screenY:
Liên quan đến phía trên bên trái của màn hình / màn hình vật lý, điểm tham chiếu này chỉ di chuyển nếu bạn tăng hoặc giảm số lượng màn hình hoặc độ phân giải màn hình.
clientXvà clientY:
Liên quan đến cạnh trên bên trái của khu vực nội dung ( khung nhìn ) của cửa sổ trình duyệt. Điểm này không di chuyển ngay cả khi người dùng di chuyển một thanh cuộn từ bên trong trình duyệt.
Đối với một hình ảnh mà trình duyệt hỗ trợ các thuộc tính:
http://www.quirksmode.org/dom/w3c_cssom.html#t03
w3schools có trình thông dịch và trình soạn thảo Javascript trực tuyến để bạn có thể xem những gì từng làm
http://www.w3schools.com/jsref/tryit.asp?filename=try_dom_event_clientxy
<!DOCTYPE html>
<html>
<head>
<script>
function show_coords(event)
{
var x=event.clientX;
var y=event.clientY;
alert("X coords: " + x + ", Y coords: " + y);
}
</script>
</head>
<body>
<p onmousedown="show_coords(event)">Click this paragraph,
and an alert box will alert the x and y coordinates
of the mouse pointer.</p>
</body>
</html>
Đây là một hình ảnh giải thích sự khác biệt giữa pageYvà clientY.

Tương tự cho pageXvà clientX, tương ứng.
pageX/Y tọa độ có liên quan đến góc trên cùng bên trái của toàn bộ trang được hiển thị (bao gồm các phần bị ẩn bằng cách cuộn),
trong khi clientX/Ytọa độ tương đối với góc trên cùng bên trái của phần hiển thị của trang, "nhìn thấy" thông qua cửa sổ trình duyệt.
Có lẽ bạn sẽ không bao giờ cần screenX/Y
screenX/Ylà?
pageX/pageYnên được sử dụng thay vì clientX/clientY?
<html>phần tử trong pixel CSS.viewportpixel CSS.screenpixel trong thiết bị.Về câu hỏi cuối cùng của bạn nếu tính toán tương tự trên trình duyệt máy tính để bàn và thiết bị di động ... Để hiểu rõ hơn - trên trình duyệt di động - chúng tôi cần phân biệt hai khái niệm mới: chế độ xem bố cục và chế độ xem trực quan . Chế độ xem trực quan là một phần của trang hiện đang được hiển thị trên màn hình. Chế độ xem bố cục là từ đồng nghĩa cho toàn bộ trang được hiển thị trên trình duyệt máy tính để bàn (với tất cả các yếu tố không hiển thị trên chế độ xem hiện tại).
Trên các trình duyệt di động, pageXvà pageYvẫn tương đối với trang bằng pixel CSS để bạn có thể có được tọa độ chuột so với trang tài liệu. Mặt khác clientXvà clientYxác định tọa độ chuột liên quan đến chế độ xem trực quan .
Có một luồng stackoverflow khác ở đây liên quan đến sự khác biệt giữa chế độ xem trực quan và chế độ xem bố cục: Sự khác biệt giữa chế độ xem trực quan và chế độ xem bố cục?
Một tài nguyên tốt khác: http://www.quirksmode.org/mobile/viewports2.html
Điều giúp tôi là thêm một sự kiện trực tiếp vào trang này và tự mình bấm vào! Mở bảng điều khiển của bạn trong các công cụ dành cho nhà phát triển / Fireorms, v.v. và dán cái này:
document.addEventListener('click', function(e) {
console.log(
'page: ' + e.pageX + ',' + e.pageY,
'client: ' + e.clientX + ',' + e.clientY,
'screen: ' + e.screenX + ',' + e.screenY)
}, false);
Click anywhere
Với đoạn mã này, bạn có thể theo dõi vị trí nhấp của mình khi bạn cuộn, di chuyển cửa sổ trình duyệt, v.v.
Lưu ý rằng pageX / Y và clientX / Y giống nhau khi bạn cuộn toàn bộ lên đầu!
Sự khác biệt giữa những thứ đó sẽ phụ thuộc phần lớn vào trình duyệt mà bạn hiện đang đề cập đến. Mỗi người thực hiện các tính chất này khác nhau, hoặc hoàn toàn không. Quirksmode có tài liệu tuyệt vời về sự khác biệt của trình duyệt liên quan đến các tiêu chuẩn W3C như DOM và JavaScript Sự kiện.