“Kích thước của mục tiêu cho các thao tác nhập bằng con trỏ tối thiểu là 24 x 24 điểm ảnh CSS, trừ khi:” là toàn bộ Tiêu chí Thành công 2.5.8, Kích thước Mục tiêu (Tối thiểu), trước khi các ngoại lệ bắt đầu.1 Tiêu chí này ở Mức AA trong WCAG 2.2, Khuyến nghị của W3C ngày 12 tháng 12 năm 2024, và có năm ngoại lệ.1 Một trong số đó, Nội dòng (Inline), quyết định cách quy tắc áp dụng cho một quảng cáo nằm trong câu văn.2 Trước ngoại lệ đó là một vấn đề đơn giản hơn: con trỏ mà người đọc trên điện thoại dùng với trang không thể di chuột lơ lửng (hover).

Hover là một sự kiện của máy tính để bàn, và điện thoại không có sự kiện đó

Trang của MDN về đặc tính media hover nói rằng nó kiểm tra “liệu cơ chế nhập chính của người dùng có thể di lơ lửng trên các phần tử hay không.”3 Giá trị “none” của nó bao gồm thiết bị “hoàn toàn không thể di lơ lửng hoặc không thể di lơ lửng một cách thuận tiện.”3 Ví dụ được đưa ra là thiết bị cầm tay: “nhiều thiết bị di động mô phỏng việc di lơ lửng khi người dùng thực hiện một lần chạm giữ lâu bất tiện,” và chính sự mô phỏng đó là điều mà “none” mô tả.3 Một người đọc trên máy tính để bàn đặt con trỏ lên một từ được gạch chân gửi đi một sự kiện mà điện thoại không có cách thông thường nào để gửi.

Những từ vốn có trong bài viết của nhà xuất bản được gạch chân bằng một đường chấm nhạt, và khung nhỏ mở ra từ đó là bong bóng. Trên máy tính để bàn, bong bóng mở sau một khoảng trễ ngắn khi di chuột và đóng lại khi đưa chuột ra ngoài hoặc nhấn phím Escape; từ bàn phím, nhấn Enter trên từ đang được chọn sẽ mở nó. Trên điện thoại, mã nhúng, adbubbles.js, cho lần chạm đầu tiên vai trò của việc di chuột. Chạm vào từ được gạch chân sẽ mở bong bóng, và chạm vào bất cứ đâu bên ngoài sẽ đóng nó. Chỉ lần chạm thứ hai, vào liên kết bên trong, mới mở liên kết đó. Do đó, lần chạm đầu tiên vào một từ quảng cáo mở ra một khung và không thể rời khỏi trang.

Những gì rời khỏi trang là như nhau trên mọi thiết bị. Mã nhúng gửi ba beacon. Một lượt xem được gửi cho mỗi lần tải trang, một lượt mở khi bong bóng đã hiển thị được một giây, và một lượt nhấp khi một liên kết được mở. AdBubbles không đặt cookie, không lưu mã nhận dạng và không thu thập dữ liệu cá nhân của người đọc.

Apple và Google đặt mức tối thiểu lớn hơn W3C

24 điểm ảnh CSS của WCAG là mức tối thiểu, và Apple cùng Google công bố những con số lớn hơn theo đơn vị riêng của họ. Các mẹo thiết kế của Apple khuyên nhà thiết kế “Tạo các điều khiển có kích thước ít nhất 44 điểm x 44 điểm để có thể chạm chính xác bằng ngón tay.”4 Hướng dẫn trợ năng Android của Google yêu cầu ít nhất 48x48dp cho mỗi vùng chạm.5 Hướng dẫn nói thêm rằng “Một vùng chạm 48x48dp có kích thước vật lý khoảng 9mm, bất kể kích thước màn hình.”5

Một nghiên cứu đã đo trực tiếp ngón cái. Parhi, Karlson và Bederson đã thử nghiệm với hai mươi người tham gia trên một thiết bị cầm tay màn hình cảm ứng, trong một nghiên cứu được trình bày tại MobileHCI 2006.6 Tỷ lệ lỗi không có khác biệt đáng kể khi mục tiêu chạm một lần đạt 9,6 mm.6 Các tác giả kết luận rằng 9,2 mm cho các tác vụ chạm một lần và 9,6 mm cho chuỗi các lần chạm “là đủ lớn để sử dụng bằng ngón cái một tay trên các thiết bị cầm tay màn hình cảm ứng.”6 Con số khoảng 9mm của Google nằm trong phạm vi một milimét so với cả hai.5

Một từ được gạch chân trong câu là mục tiêu mà tiêu chuẩn miễn trừ

Ngoại lệ Nội dòng ghi: “Mục tiêu nằm trong một câu hoặc kích thước của nó bị giới hạn bởi chiều cao dòng của văn bản không phải mục tiêu.”1 Một từ được gạch chân do mã nhúng đánh dấu là văn bản nằm trong đoạn văn của nhà xuất bản, với phông chữ và chiều cao dòng của chính nhà xuất bản. Mức tối thiểu 24 điểm ảnh không áp dụng cho nó.1 Liên kết bên trong bong bóng thì khác: đó là một điều khiển trong một khung, được hiển thị bên trong một Shadow DOM nơi CSS của nhà xuất bản không thể ảnh hưởng tới. Đó là loại mục tiêu mà tiêu chí được viết ra để áp dụng, và một đợt kiểm tra trợ năng sẽ đo nó như bất kỳ điều khiển nào khác.

Tài liệu Understanding viết: “Mục đích của tiêu chí thành công này là giúp đảm bảo các mục tiêu có thể dễ dàng được kích hoạt mà không vô tình kích hoạt một mục tiêu liền kề.”2 Những người đọc được nêu tên là “Người dùng có hạn chế về sự khéo léo và những người gặp khó khăn với các cử động vận động tinh.”2 Sự liền kề, chứ không chỉ riêng kích thước, là mối nguy mà W3C mô tả. Mã nhúng không bao giờ đặt hai bong bóng trong cùng một đoạn văn, và nó bỏ qua các liên kết. Do đó một từ quảng cáo không bao giờ nằm bên trong một liên kết đã có đích đến.

Xem điều này trông thế nào trên một trang web cụ thể không tốn gì. Thiết lập tài khoản nhà xuất bản và mã nhúng không tốn chi phí nào, và ghi chú cài đặt mô tả thiết lập phạm vi và mức tối đa mỗi trang. Một trang web được thêm vào tài khoản sẽ cho thấy những từ nào của nó hiện đang được bán trước khi bất kỳ bong bóng nào chạy.

Google đã coi lần chạm nhầm là một vấn đề chính sách

Chính sách vị trí quảng cáo của Google cho AdSense yêu cầu nhà xuất bản “Cẩn thận khi đặt liên kết, nút phát, nút tải xuống, nút điều hướng gần quảng cáo vì chúng có thể dẫn đến những lượt nhấp vô tình.”7 Chính sách Nhà xuất bản của Google cấm các quảng cáo do Google phân phát mà “che phủ hoặc nằm liền kề các mục điều hướng hay các mục hành động khác và có thể dẫn đến tương tác quảng cáo ngoài ý muốn.”8 Cả hai đều mô tả kiểu chạm trong tuyên bố mục đích của W3C: một lần chạm dành cho một mục tiêu nhưng lại rơi vào mục tiêu khác. Một trang chính sách chỉ có thể yêu cầu nhà xuất bản cẩn thận; một định dạng thì quyết định lần chạm đầu tiên làm gì.

Biện pháp khắc phục của Google cho những vị trí liên tục tạo ra các lượt nhấp như vậy là Lượt nhấp được xác nhận (Confirmed Click). Trang trợ giúp mô tả nó là “một tính năng sản phẩm Google Ads thêm bước xác nhận cho các vị trí quảng cáo có thể đang tạo ra lượt nhấp vô tình.”9 Người đọc chạm vào một quảng cáo như vậy “sẽ được yêu cầu xác nhận ý định truy cập trang của nhà quảng cáo bằng cách nhấp vào một nút gắn với một hành động, chẳng hạn ‘Visit site’ (Truy cập trang web).”9 Trên những vị trí đó, Google không còn coi một lần chạm là bằng chứng của ý định, và chèn thêm một lần chạm khác sau đó.

Bong bóng có lần chạm thứ hai đó theo thiết kế chứ không phải như một biện pháp khắc phục. Lần chạm đầu tiên mở ra một khung mang nhãn “Ad” (Quảng cáo), một tiêu đề tối đa bốn mươi ký tự, và một nội dung tối đa chín mươi ký tự. Trong khung còn có tên miền hiển thị của nhà quảng cáo, một liên kết, và một dấu nhỏ “Ads by AdBubbles”. Lần chạm thứ hai, vào liên kết, là lượt nhấp, và mọi liên kết trong bong bóng đều mang rel="sponsored noopener".

Những gì mã nhúng biết về lần chạm thứ hai đó chỉ là nó đã xảy ra. AdBubbles ghép các từ trên các trang của nhà xuất bản với một nhà quảng cáo đã mua chúng trong tháng. Những người đọc thấy bong bóng là bất kỳ ai mở trang, mã nhúng không theo dõi ai trong số họ sang trang hay trang web khác, và không kết quả nào được hứa hẹn với nhà quảng cáo. Một beacon lượt nhấp ghi lại rằng một liên kết đã được mở và không ghi gì về lý do.

Lần chạm đầu tiên không thể phóng to một từ được đặt ở cỡ chữ nhỏ

Ngoại lệ Nội dòng cũng có nghĩa là từ được gạch chân mang bất kỳ kích thước nào mà kiểu chữ của nhà xuất bản cho nó. Giả sử một trang web đặt đoạn văn ở cỡ 14 điểm ảnh với chiều cao dòng 20 điểm ảnh trên điện thoại. Khi đó từ được gạch chân không cao hơn dòng 20 điểm ảnh của nó, dưới mức tối thiểu mà tiêu chí đặt ra cho các mục tiêu khác. Nó chỉ được miễn trừ vì nằm trong dòng. Không điều gì trong ngoại lệ thay đổi được ngón cái phải chạm trúng nó.

Mã nhúng thêm một đường gạch chân chấm vào một từ đã được mua và không thay đổi gì khác về kiểu chữ. Từ đó vẫn ở phông chữ của chính nhà xuất bản, với chiều cao dòng mà giao diện đã đặt. Một nhà xuất bản có các trang khó chạm trên điện thoại sẽ thấy các từ được gạch chân cũng khó chạm như các liên kết xung quanh chúng. Phạm vi và mức tối đa mỗi trang quyết định một trang có bao nhiêu từ được gạch chân. Không thiết lập nào làm cho một từ lớn hơn cỡ chữ mà nó được đặt.