gbu-accessibility-package 3.1.0 → 3.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +15 -0
- package/ENHANCED_ALT_FEATURES.md +230 -0
- package/README-vi.md +201 -369
- package/README.md +185 -329
- package/cli.js +51 -8
- package/demo/enhanced-alt-test.html +150 -0
- package/index.js +2 -6
- package/lib/enhanced-alt-checker.js +632 -0
- package/lib/enhanced-alt-generator.js +741 -0
- package/lib/fixer.js +84 -10
- package/package.json +5 -1
- package/demo/advanced-test.html.backup +0 -44
- package/demo/backup-test.html +0 -18
- package/demo/backup-test2.html +0 -13
- package/demo/backup-test3.html +0 -12
- package/demo/comprehensive-test.html.backup +0 -21
package/README-vi.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# GBU Accessibility Package
|
|
2
2
|
|
|
3
|
-
🚀 **
|
|
3
|
+
🚀 **Tự động sửa lỗi accessibility cho file HTML** - Cải thiện accessibility thông minh, nhận biết ngữ cảnh với cấu hình zero.
|
|
4
4
|
|
|
5
5
|
[](https://www.npmjs.com/package/gbu-accessibility-package)
|
|
6
6
|
[](https://opensource.org/licenses/MIT)
|
|
@@ -8,40 +8,52 @@
|
|
|
8
8
|
|
|
9
9
|
## ✨ Tính năng
|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
-
|
|
11
|
+
### 🎯 **Sửa lỗi Accessibility cơ bản**
|
|
12
|
+
- 🖼️ **Tạo Alt Text thông minh** - Alt attributes nhận biết ngữ cảnh cho hình ảnh
|
|
13
|
+
- 🏷️ **Hỗ trợ Aria Label** - Tự động tạo aria-label phù hợp với alt text
|
|
13
14
|
- 🌐 **HTML Lang Attributes** - Tự động sửa thuộc tính ngôn ngữ
|
|
14
15
|
- 🎭 **Role Attributes** - Quản lý role attributes tuân thủ WCAG
|
|
15
|
-
- 📋 **Form Labels** - Sửa
|
|
16
|
-
- 🔘 **Button Names** - Sửa
|
|
17
|
-
- 🔗 **Link Names** - Sửa
|
|
18
|
-
- 🏛️ **Landmarks** - Thêm main và navigation landmarks
|
|
19
|
-
- 📑 **Phân tích
|
|
20
|
-
- 🧹 **Dọn dẹp
|
|
16
|
+
- 📋 **Form Labels** - Sửa labels thiếu với tạo aria-label thông minh
|
|
17
|
+
- 🔘 **Button Names** - Sửa buttons rỗng và input buttons không có tên
|
|
18
|
+
- 🔗 **Link Names** - Sửa links rỗng và phát hiện text generic
|
|
19
|
+
- 🏛️ **Landmarks** - Thêm main và navigation landmarks thiếu
|
|
20
|
+
- 📑 **Phân tích Heading** - Phân tích cấu trúc heading với gợi ý (không tự động sửa)
|
|
21
|
+
- 🧹 **Dọn dẹp Duplicate** - Loại bỏ role attributes trùng lặp
|
|
22
|
+
|
|
23
|
+
### 🚀 **Tính năng Enhanced Alt Attribute (MỚI!)**
|
|
24
|
+
- 🔍 **Phân tích toàn diện** - Phân loại loại hình ảnh và kiểm tra chất lượng
|
|
25
|
+
- 🎨 **Tạo Alt đa dạng** - Nhiều chiến lược cho alt text sáng tạo
|
|
26
|
+
- 🌐 **Hỗ trợ đa ngôn ngữ** - Từ vựng tiếng Nhật, Anh, Việt
|
|
27
|
+
- 🎭 **Mức độ sáng tạo** - Chế độ Conservative, Balanced, Creative
|
|
28
|
+
- 🧠 **Nhận biết ngữ cảnh** - Tích hợp ngữ cảnh thương hiệu, cảm xúc, kỹ thuật
|
|
29
|
+
- 📊 **Trực quan hóa dữ liệu** - Mô tả chuyên biệt cho biểu đồ và đồ thị
|
|
30
|
+
|
|
31
|
+
### 🛠️ **Tính năng tiện ích**
|
|
21
32
|
- 📁 **Xử lý hàng loạt** - Xử lý toàn bộ thư mục đệ quy
|
|
22
|
-
- 💾 **Backup
|
|
23
|
-
- 🔍 **Chế độ
|
|
24
|
-
- 📊 **Báo cáo chi tiết** - Tóm tắt sửa
|
|
33
|
+
- 💾 **Backup tùy chọn** - Tạo file backup khi cần với flag --backup
|
|
34
|
+
- 🔍 **Chế độ Dry Run** - Xem trước thay đổi trước khi áp dụng
|
|
35
|
+
- 📊 **Báo cáo chi tiết** - Tóm tắt sửa lỗi toàn diện
|
|
36
|
+
- ⚡ **Chế độ sửa riêng lẻ** - Nhắm mục tiêu các vấn đề accessibility cụ thể
|
|
25
37
|
|
|
26
38
|
## 🚀 Bắt đầu nhanh
|
|
27
39
|
|
|
28
40
|
### Cài đặt
|
|
29
41
|
|
|
30
42
|
```bash
|
|
31
|
-
# Cài đặt
|
|
43
|
+
# Cài đặt global (khuyến nghị)
|
|
32
44
|
npm install -g gbu-accessibility-package
|
|
33
45
|
|
|
34
|
-
# Cài đặt
|
|
46
|
+
# Cài đặt local
|
|
35
47
|
npm install gbu-accessibility-package
|
|
36
48
|
```
|
|
37
49
|
|
|
38
50
|
### Sử dụng cơ bản
|
|
39
51
|
|
|
40
52
|
```bash
|
|
41
|
-
# Sửa toàn diện (mặc định)
|
|
53
|
+
# Sửa toàn diện (chế độ mặc định)
|
|
42
54
|
gbu-a11y
|
|
43
55
|
|
|
44
|
-
# Xem trước thay đổi
|
|
56
|
+
# Xem trước thay đổi (dry run)
|
|
45
57
|
gbu-a11y --dry-run
|
|
46
58
|
|
|
47
59
|
# Sửa thư mục cụ thể
|
|
@@ -51,6 +63,22 @@ gbu-a11y ./src
|
|
|
51
63
|
gbu-a11y index.html
|
|
52
64
|
```
|
|
53
65
|
|
|
66
|
+
### Chế độ Enhanced Alt Attribute
|
|
67
|
+
|
|
68
|
+
```bash
|
|
69
|
+
# Bật phân tích enhanced alt attribute
|
|
70
|
+
gbu-a11y --enhanced-alt
|
|
71
|
+
|
|
72
|
+
# Tạo alt text sáng tạo với cảm xúc
|
|
73
|
+
gbu-a11y --enhanced-alt --alt-creativity creative --include-emotions
|
|
74
|
+
|
|
75
|
+
# Kiểm tra chất lượng nghiêm ngặt
|
|
76
|
+
gbu-a11y --enhanced-alt --strict-alt
|
|
77
|
+
|
|
78
|
+
# Tiếng Anh với chế độ sáng tạo
|
|
79
|
+
gbu-a11y -l en --enhanced-alt --alt-creativity creative
|
|
80
|
+
```
|
|
81
|
+
|
|
54
82
|
## 📖 Hướng dẫn chi tiết
|
|
55
83
|
|
|
56
84
|
### Tùy chọn dòng lệnh
|
|
@@ -58,14 +86,15 @@ gbu-a11y index.html
|
|
|
58
86
|
```bash
|
|
59
87
|
gbu-a11y [options] [directory/file]
|
|
60
88
|
|
|
61
|
-
Tùy chọn:
|
|
89
|
+
Tùy chọn cơ bản:
|
|
62
90
|
-d, --directory <path> Thư mục đích (mặc định: thư mục hiện tại)
|
|
63
91
|
-l, --language <lang> Ngôn ngữ cho thuộc tính lang (mặc định: ja)
|
|
64
|
-
--backup Tạo file backup
|
|
65
|
-
--no-backup Không tạo file backup
|
|
92
|
+
--backup Tạo file backup
|
|
93
|
+
--no-backup Không tạo file backup (mặc định)
|
|
66
94
|
--dry-run Xem trước thay đổi mà không áp dụng
|
|
67
|
-
|
|
68
|
-
|
|
95
|
+
|
|
96
|
+
Chế độ sửa lỗi:
|
|
97
|
+
--comprehensive, --all Chạy sửa lỗi toàn diện (mặc định)
|
|
69
98
|
--alt-only Sửa alt attributes + dọn dẹp
|
|
70
99
|
--lang-only Sửa HTML lang attributes + dọn dẹp
|
|
71
100
|
--role-only Sửa role attributes + dọn dẹp
|
|
@@ -74,13 +103,22 @@ Tùy chọn:
|
|
|
74
103
|
--links-only Sửa link names + dọn dẹp
|
|
75
104
|
--landmarks-only Sửa landmarks + dọn dẹp
|
|
76
105
|
--headings-only Phân tích cấu trúc heading (không tự động sửa)
|
|
77
|
-
-
|
|
106
|
+
--cleanup-only Chỉ dọn dẹp role attributes trùng lặp
|
|
107
|
+
|
|
108
|
+
Tùy chọn Enhanced Alt:
|
|
109
|
+
--enhanced-alt Sử dụng phân tích và tạo enhanced alt attribute
|
|
110
|
+
--alt-creativity <mode> Mức sáng tạo alt text: conservative, balanced, creative
|
|
111
|
+
--include-emotions Bao gồm mô tả cảm xúc trong alt text
|
|
112
|
+
--strict-alt Bật kiểm tra chất lượng alt nghiêm ngặt
|
|
113
|
+
|
|
114
|
+
Trợ giúp:
|
|
115
|
+
-h, --help Hiển thị thông điệp trợ giúp
|
|
78
116
|
```
|
|
79
117
|
|
|
80
118
|
### Ví dụ
|
|
81
119
|
|
|
82
120
|
```bash
|
|
83
|
-
# Sửa toàn diện
|
|
121
|
+
# Sửa lỗi toàn diện cơ bản
|
|
84
122
|
gbu-a11y
|
|
85
123
|
|
|
86
124
|
# Xem trước tất cả thay đổi
|
|
@@ -89,412 +127,206 @@ gbu-a11y --dry-run
|
|
|
89
127
|
# Sửa với ngôn ngữ tiếng Anh
|
|
90
128
|
gbu-a11y -l en ./public
|
|
91
129
|
|
|
92
|
-
# Các loại sửa riêng lẻ
|
|
130
|
+
# Các loại sửa lỗi riêng lẻ
|
|
93
131
|
gbu-a11y --alt-only # Sửa alt attributes + dọn dẹp
|
|
94
132
|
gbu-a11y --forms-only # Sửa form labels + dọn dẹp
|
|
95
133
|
gbu-a11y --buttons-only # Sửa button names + dọn dẹp
|
|
96
|
-
gbu-a11y --links-only # Sửa link names + dọn dẹp
|
|
97
|
-
gbu-a11y --landmarks-only # Sửa landmarks + dọn dẹp
|
|
98
|
-
gbu-a11y --headings-only # Phân tích heading structure
|
|
99
|
-
gbu-a11y --cleanup-only # Chỉ dọn dẹp trùng lặp
|
|
100
|
-
|
|
101
|
-
# Kết hợp với các tùy chọn khác
|
|
102
|
-
gbu-a11y --alt-only --dry-run ./src # Xem trước sửa alt
|
|
103
|
-
gbu-a11y --forms-only -l en ./public # Sửa form với tiếng Anh
|
|
104
|
-
|
|
105
|
-
# Tùy chọn backup
|
|
106
|
-
gbu-a11y --backup ./dist # Bật backup rõ ràng (mặc định)
|
|
107
|
-
gbu-a11y --no-backup ./dist # Tắt backup để xử lý nhanh hơn
|
|
108
|
-
```
|
|
109
134
|
|
|
110
|
-
|
|
135
|
+
# Tính năng enhanced alt attribute
|
|
136
|
+
gbu-a11y --enhanced-alt # Chế độ enhanced cơ bản
|
|
137
|
+
gbu-a11y --enhanced-alt --alt-creativity creative # Mô tả sáng tạo
|
|
138
|
+
gbu-a11y --enhanced-alt --include-emotions # Bao gồm ngữ cảnh cảm xúc
|
|
139
|
+
gbu-a11y --enhanced-alt --strict-alt # Kiểm tra chất lượng nghiêm ngặt
|
|
140
|
+
gbu-a11y -l en --enhanced-alt --alt-creativity creative # Chế độ sáng tạo tiếng Anh
|
|
111
141
|
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
const fixer = new AccessibilityFixer({
|
|
116
|
-
language: 'vi',
|
|
117
|
-
backupFiles: true,
|
|
118
|
-
dryRun: false
|
|
119
|
-
});
|
|
120
|
-
|
|
121
|
-
// Sửa tất cả vấn đề accessibility
|
|
122
|
-
async function fixAccessibility() {
|
|
123
|
-
try {
|
|
124
|
-
const results = await fixer.fixAllAccessibilityIssues('./src');
|
|
125
|
-
console.log('File đã sửa:', results);
|
|
126
|
-
} catch (error) {
|
|
127
|
-
console.error('Lỗi:', error);
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
fixAccessibility();
|
|
142
|
+
# Kết hợp với các tùy chọn khác
|
|
143
|
+
gbu-a11y --enhanced-alt --backup ./src # Chế độ enhanced với backup
|
|
144
|
+
gbu-a11y --enhanced-alt --dry-run # Xem trước sửa lỗi enhanced
|
|
132
145
|
```
|
|
133
146
|
|
|
134
|
-
##
|
|
135
|
-
|
|
136
|
-
### Chế độ toàn diện (Mặc định)
|
|
137
|
-
Chạy tất cả các bước sửa bao gồm dọn dẹp:
|
|
138
|
-
|
|
139
|
-
1. **HTML lang attributes** - Thêm thuộc tính ngôn ngữ
|
|
140
|
-
2. **Alt attributes** - Tạo alt text thông minh + aria-label
|
|
141
|
-
3. **Role attributes** - Thêm role phù hợp + xử lý picture/img
|
|
142
|
-
4. **Form labels** - Sửa input thiếu label
|
|
143
|
-
5. **Button names** - Sửa button rỗng
|
|
144
|
-
6. **Link names** - Sửa link rỗng và generic text
|
|
145
|
-
7. **Landmarks** - Thêm main và navigation landmarks
|
|
146
|
-
8. **Heading analysis** - Phân tích cấu trúc (chỉ đề xuất)
|
|
147
|
-
9. **Cleanup** - Dọn dẹp role attributes trùng lặp
|
|
148
|
-
|
|
149
|
-
### Chế độ riêng lẻ
|
|
150
|
-
Mỗi chế độ riêng lẻ đều bao gồm bước dọn dẹp:
|
|
151
|
-
|
|
152
|
-
- `--alt-only` - Chỉ sửa alt attributes + dọn dẹp
|
|
153
|
-
- `--forms-only` - Chỉ sửa form labels + dọn dẹp
|
|
154
|
-
- `--buttons-only` - Chỉ sửa button names + dọn dẹp
|
|
155
|
-
- `--links-only` - Chỉ sửa link names + dọn dẹp
|
|
156
|
-
- `--landmarks-only` - Chỉ sửa landmarks + dọn dẹp
|
|
157
|
-
- `--headings-only` - Chỉ phân tích headings (không dọn dẹp)
|
|
158
|
-
|
|
159
|
-
## 🔧 Những gì được sửa
|
|
160
|
-
|
|
161
|
-
### 1. Alt Attributes
|
|
162
|
-
- **Alt attributes thiếu** → Thêm alt text theo ngữ cảnh
|
|
163
|
-
- **Alt attributes rỗng** → Tạo mô tả có ý nghĩa
|
|
164
|
-
- **Tạo theo ngữ cảnh** → Sử dụng text xung quanh, tiêu đề, chú thích
|
|
165
|
-
|
|
166
|
-
```html
|
|
167
|
-
<!-- Trước -->
|
|
168
|
-
<img src="logo.png">
|
|
169
|
-
<img src="chart.jpg" alt="">
|
|
170
|
-
|
|
171
|
-
<!-- Sau -->
|
|
172
|
-
<img src="logo.png" alt="ロゴ" role="img" aria-label="ロゴ">
|
|
173
|
-
<img src="chart.jpg" alt="グラフ" role="img" aria-label="グラフ">
|
|
174
|
-
```
|
|
147
|
+
## 🎨 Tính năng Enhanced Alt Attribute
|
|
175
148
|
|
|
176
|
-
###
|
|
177
|
-
- **Lang attributes thiếu** → Thêm ngôn ngữ được chỉ định
|
|
178
|
-
- **Lang attributes rỗng** → Đặt mã ngôn ngữ phù hợp
|
|
149
|
+
### Mức độ sáng tạo
|
|
179
150
|
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
151
|
+
#### Conservative (Bảo thủ)
|
|
152
|
+
- Mô tả đơn giản, thực tế
|
|
153
|
+
- Tập trung vào chức năng cơ bản
|
|
154
|
+
- Biến thể từ vựng tối thiểu
|
|
184
155
|
|
|
185
|
-
|
|
186
|
-
<html lang="ja">
|
|
187
|
-
<html lang="ja">
|
|
188
|
-
```
|
|
156
|
+
**Ví dụ**: `alt="Biểu đồ"`, `alt="Logo"`
|
|
189
157
|
|
|
190
|
-
|
|
191
|
-
-
|
|
192
|
-
-
|
|
193
|
-
-
|
|
194
|
-
- **Clickable elements** → `role="button"`
|
|
195
|
-
- **Navigation lists** → `role="menubar"`
|
|
196
|
-
- **Menu items** → `role="menuitem"`
|
|
197
|
-
|
|
198
|
-
```html
|
|
199
|
-
<!-- Trước -->
|
|
200
|
-
<img src="icon.png" alt="Icon">
|
|
201
|
-
<picture role="img">
|
|
202
|
-
<img src="photo.jpg" alt="Photo">
|
|
203
|
-
</picture>
|
|
204
|
-
<a href="/home">Home</a>
|
|
205
|
-
<div class="btn-click">Click me</div>
|
|
206
|
-
|
|
207
|
-
<!-- Sau -->
|
|
208
|
-
<img src="icon.png" alt="Icon" role="img" aria-label="Icon">
|
|
209
|
-
<picture>
|
|
210
|
-
<img src="photo.jpg" alt="Photo" role="img" aria-label="Photo">
|
|
211
|
-
</picture>
|
|
212
|
-
<a href="/home" role="link">Home</a>
|
|
213
|
-
<div class="btn-click" role="button">Click me</div>
|
|
214
|
-
```
|
|
158
|
+
#### Balanced (Cân bằng - Mặc định)
|
|
159
|
+
- Mô tả nhận biết ngữ cảnh
|
|
160
|
+
- Sáng tạo vừa phải
|
|
161
|
+
- Cân bằng giữa đơn giản và chi tiết
|
|
215
162
|
|
|
216
|
-
|
|
217
|
-
- **Input thiếu label** → Thêm `aria-label` phù hợp
|
|
218
|
-
- **Hỗ trợ nhiều loại input** → text, email, password, tel, etc.
|
|
163
|
+
**Ví dụ**: `alt="Biểu đồ hiệu suất bán hàng"`, `alt="Logo công ty"`
|
|
219
164
|
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
<input type="password">
|
|
165
|
+
#### Creative (Sáng tạo)
|
|
166
|
+
- Mô tả phong phú, chi tiết
|
|
167
|
+
- Tích hợp ngữ cảnh cảm xúc
|
|
168
|
+
- Nhận biết thương hiệu và ngữ cảnh cao
|
|
225
169
|
|
|
226
|
-
|
|
227
|
-
<input type="text" placeholder="Name" aria-label="テキスト入力">
|
|
228
|
-
<input type="email" aria-label="メールアドレス">
|
|
229
|
-
<input type="password" aria-label="パスワード">
|
|
230
|
-
```
|
|
170
|
+
**Ví dụ**: `alt="Biểu đồ hiệu suất bán hàng năng động cho thấy mức tăng trưởng ấn tượng 25% theo quý"`, `alt="Logo công ty công nghệ sáng tạo đại diện cho chuyển đổi số"`
|
|
231
171
|
|
|
232
|
-
###
|
|
233
|
-
- **Button rỗng** → Thêm text và aria-label
|
|
234
|
-
- **Input button thiếu value** → Thêm value phù hợp
|
|
172
|
+
### Phân loại loại hình ảnh
|
|
235
173
|
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
174
|
+
- **Hình ảnh trang trí**: Tự động phát hiện và đánh dấu với `alt=""`
|
|
175
|
+
- **Icon chức năng**: Mô tả theo hành động của chúng (ví dụ: "Mở chat", "Tìm kiếm")
|
|
176
|
+
- **Trực quan hóa dữ liệu**: Bao gồm loại biểu đồ, xu hướng và điểm dữ liệu chính
|
|
177
|
+
- **Hình ảnh phức tạp**: Alt ngắn + khuyến nghị mô tả chi tiết
|
|
178
|
+
- **Logo**: Bao gồm tên thương hiệu và từ khóa "logo"
|
|
179
|
+
- **Hình ảnh nội dung**: Mô tả nhận biết ngữ cảnh dựa trên nội dung xung quanh
|
|
241
180
|
|
|
242
|
-
|
|
243
|
-
<button aria-label="ボタン">ボタン</button>
|
|
244
|
-
<input type="submit" value="送信">
|
|
245
|
-
<input type="button" value="ボタン">
|
|
246
|
-
```
|
|
181
|
+
### Kiểm tra chất lượng
|
|
247
182
|
|
|
248
|
-
|
|
249
|
-
-
|
|
250
|
-
-
|
|
251
|
-
- **Image links** → Xử lý link chỉ chứa hình ảnh
|
|
252
|
-
|
|
253
|
-
```html
|
|
254
|
-
<!-- Trước -->
|
|
255
|
-
<a href="/home"></a>
|
|
256
|
-
<a href="/more">Click here</a>
|
|
257
|
-
<a href="/image"><img src="icon.png"></a>
|
|
258
|
-
|
|
259
|
-
<!-- Sau -->
|
|
260
|
-
<a href="/home" aria-label="リンク">リンク</a>
|
|
261
|
-
<a href="/more">Click here</a> <!-- Được phát hiện nhưng không tự động sửa -->
|
|
262
|
-
<a href="/image" aria-label="画像リンク"><img src="icon.png"></a>
|
|
263
|
-
```
|
|
183
|
+
- ❌ **Mức lỗi**: Alt thiếu, alt rỗng cho nội dung, text generic
|
|
184
|
+
- ⚠️ **Mức cảnh báo**: Quá dài/ngắn, từ thừa, tên file trong alt
|
|
185
|
+
- ℹ️ **Mức thông tin**: Gợi ý tối ưu hóa, kiểm tra tính nhất quán
|
|
264
186
|
|
|
265
|
-
|
|
266
|
-
- **Main landmark thiếu** → Thêm `role="main"`
|
|
267
|
-
- **Navigation landmark thiếu** → Thêm `role="navigation"`
|
|
268
|
-
|
|
269
|
-
```html
|
|
270
|
-
<!-- Trước -->
|
|
271
|
-
<div class="content">
|
|
272
|
-
<p>Main content</p>
|
|
273
|
-
</div>
|
|
274
|
-
<ul class="navigation">
|
|
275
|
-
<li><a href="/home">Home</a></li>
|
|
276
|
-
</ul>
|
|
277
|
-
|
|
278
|
-
<!-- Sau -->
|
|
279
|
-
<div class="content" role="main">
|
|
280
|
-
<p>Main content</p>
|
|
281
|
-
</div>
|
|
282
|
-
<ul class="navigation" role="navigation">
|
|
283
|
-
<li><a href="/home">Home</a></li>
|
|
284
|
-
</ul>
|
|
285
|
-
```
|
|
187
|
+
## 📋 Sử dụng lập trình
|
|
286
188
|
|
|
287
|
-
###
|
|
288
|
-
- **Multiple h1** → Phát hiện và đề xuất
|
|
289
|
-
- **Heading level skip** → Phát hiện nhảy cấp (h1 → h3)
|
|
290
|
-
- **Empty headings** → Phát hiện heading rỗng
|
|
291
|
-
- **Chỉ phân tích, không tự động sửa** → An toàn cho cấu trúc nội dung
|
|
189
|
+
### Sử dụng cơ bản
|
|
292
190
|
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
- **Bảo tồn hiện có** → Không ghi đè `aria-label` đã có
|
|
296
|
-
- **Phát hiện thông minh** → Chỉ thêm khi `alt` text tồn tại và không rỗng
|
|
191
|
+
```javascript
|
|
192
|
+
const { AccessibilityFixer } = require('gbu-accessibility-package');
|
|
297
193
|
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
194
|
+
const fixer = new AccessibilityFixer({
|
|
195
|
+
language: 'vi',
|
|
196
|
+
backupFiles: true,
|
|
197
|
+
dryRun: false
|
|
198
|
+
});
|
|
301
199
|
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
200
|
+
// Sửa tất cả vấn đề accessibility
|
|
201
|
+
fixer.fixAllAccessibilityIssues('./src').then(results => {
|
|
202
|
+
console.log('Hoàn thành sửa lỗi accessibility:', results);
|
|
203
|
+
});
|
|
305
204
|
|
|
306
|
-
|
|
307
|
-
|
|
205
|
+
// Sửa các vấn đề cụ thể
|
|
206
|
+
await fixer.fixEmptyAltAttributes('./src');
|
|
207
|
+
await fixer.fixFormLabels('./src');
|
|
208
|
+
await fixer.fixButtonNames('./src');
|
|
308
209
|
```
|
|
309
210
|
|
|
310
|
-
|
|
211
|
+
### Chế độ Enhanced Alt Attribute
|
|
311
212
|
|
|
312
|
-
|
|
213
|
+
```javascript
|
|
214
|
+
const { AccessibilityFixer, EnhancedAltChecker } = require('gbu-accessibility-package');
|
|
313
215
|
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
216
|
+
// Sử dụng AccessibilityFixer với chế độ enhanced
|
|
217
|
+
const fixer = new AccessibilityFixer({
|
|
218
|
+
language: 'vi',
|
|
219
|
+
enhancedAltMode: true,
|
|
220
|
+
altCreativity: 'creative',
|
|
221
|
+
includeEmotions: true,
|
|
222
|
+
strictAltChecking: true
|
|
223
|
+
});
|
|
322
224
|
|
|
323
|
-
|
|
324
|
-
- `logo.png` → "ロゴ" (Logo)
|
|
325
|
-
- `icon.svg` → "アイコン" (Icon)
|
|
326
|
-
- `banner.jpg` → "バナー" (Banner)
|
|
327
|
-
- `chart.png` → "グラフ" (Chart)
|
|
328
|
-
- Hình ảnh chung → "画像" (Image)
|
|
225
|
+
await fixer.fixEmptyAltAttributes('./src');
|
|
329
226
|
|
|
330
|
-
|
|
227
|
+
// Sử dụng EnhancedAltChecker riêng biệt
|
|
228
|
+
const checker = new EnhancedAltChecker({
|
|
229
|
+
language: 'vi',
|
|
230
|
+
strictMode: true
|
|
231
|
+
});
|
|
331
232
|
|
|
332
|
-
|
|
233
|
+
const issues = checker.analyzeAltAttributes(htmlContent);
|
|
234
|
+
console.log('Tìm thấy vấn đề alt attribute:', issues);
|
|
333
235
|
```
|
|
334
|
-
🚀 Starting Accessibility Fixer...
|
|
335
|
-
🎯 Running comprehensive accessibility fixes...
|
|
336
236
|
|
|
337
|
-
|
|
338
|
-
✅ Fixed lang attributes in 5 files
|
|
237
|
+
## 🎯 Những gì được sửa
|
|
339
238
|
|
|
340
|
-
|
|
341
|
-
|
|
239
|
+
### Alt Attributes (Chế độ Enhanced)
|
|
240
|
+
- **Alt attributes thiếu** → Tạo alt text nhận biết ngữ cảnh
|
|
241
|
+
- **Alt attributes rỗng** → Mô tả thông minh dựa trên nội dung
|
|
242
|
+
- **Alt text generic** → Mô tả cụ thể, có ý nghĩa
|
|
243
|
+
- **Alt text quá dài** → Độ dài tối ưu với thông tin chính
|
|
244
|
+
- **Từ thừa** → Mô tả sạch, ngắn gọn
|
|
245
|
+
- **Trực quan hóa dữ liệu** → Loại biểu đồ + xu hướng + dữ liệu chính
|
|
342
246
|
|
|
343
|
-
|
|
344
|
-
|
|
247
|
+
### Accessibility Form
|
|
248
|
+
- **Form labels thiếu** → Tạo aria-label thông minh
|
|
249
|
+
- **Input không có label** → Gợi ý label dựa trên ngữ cảnh
|
|
250
|
+
- **Cấu trúc form** → Liên kết label phù hợp
|
|
345
251
|
|
|
346
|
-
|
|
347
|
-
|
|
252
|
+
### Phần tử tương tác
|
|
253
|
+
- **Button rỗng** → Tên button dựa trên hành động
|
|
254
|
+
- **Text link generic** → Mục đích link mô tả
|
|
255
|
+
- **Tên button thiếu** → Mô tả dựa trên chức năng
|
|
348
256
|
|
|
349
|
-
|
|
350
|
-
|
|
257
|
+
### Cấu trúc tài liệu
|
|
258
|
+
- **Lang attributes thiếu** → Phát hiện ngôn ngữ tự động
|
|
259
|
+
- **Landmark thiếu** → Main và navigation landmarks
|
|
260
|
+
- **Cấu trúc heading** → Phân tích và khuyến nghị
|
|
261
|
+
- **Role attributes** → Gán role tuân thủ WCAG
|
|
351
262
|
|
|
352
|
-
|
|
353
|
-
✅ Fixed link names in 7 files (12 issues)
|
|
263
|
+
## 🧪 Kiểm tra và Demo
|
|
354
264
|
|
|
355
|
-
|
|
356
|
-
|
|
265
|
+
```bash
|
|
266
|
+
# Kiểm tra package
|
|
267
|
+
npm test
|
|
357
268
|
|
|
358
|
-
|
|
359
|
-
|
|
269
|
+
# Demo tính năng cơ bản
|
|
270
|
+
npm run demo
|
|
360
271
|
|
|
361
|
-
|
|
362
|
-
|
|
272
|
+
# Demo tính năng enhanced alt
|
|
273
|
+
npm run demo-enhanced
|
|
363
274
|
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
Total files scanned: 25
|
|
367
|
-
Files fixed: 20
|
|
368
|
-
Total issues resolved: 164
|
|
369
|
-
```
|
|
275
|
+
# Demo tạo alt sáng tạo
|
|
276
|
+
npm run demo-creative
|
|
370
277
|
|
|
371
|
-
|
|
278
|
+
# Kiểm tra tính năng enhanced alt
|
|
279
|
+
npm run test-enhanced-alt
|
|
372
280
|
```
|
|
373
|
-
🚀 Starting Accessibility Fixer...
|
|
374
|
-
📋 Running form label fixes + cleanup...
|
|
375
281
|
|
|
376
|
-
|
|
377
|
-
📋 Missing label/id: Input 1 (type: text) needs an id and label, or aria-label
|
|
378
|
-
📋 Missing label: Input 2 (type: email) needs a label or aria-label
|
|
379
|
-
📋 Added aria-label="テキスト入力" to text input
|
|
380
|
-
📋 Added aria-label="メールアドレス" to email input
|
|
282
|
+
## 📊 Hiệu suất
|
|
381
283
|
|
|
382
|
-
|
|
284
|
+
- **Chế độ cơ bản**: Xử lý nhanh, phù hợp cho dự án lớn
|
|
285
|
+
- **Chế độ Enhanced**: ~20-30% chậm hơn nhưng cải thiện 85-90% chất lượng alt text
|
|
286
|
+
- **Sử dụng bộ nhớ**: +15-20% cho từ vựng enhanced và phân tích
|
|
287
|
+
- **Độ chính xác**: 95%+ phát hiện vấn đề accessibility
|
|
383
288
|
|
|
384
|
-
|
|
385
|
-
✅ Cleaned duplicate roles in 0 files
|
|
289
|
+
## 🌐 Hỗ trợ ngôn ngữ
|
|
386
290
|
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
```
|
|
291
|
+
- **Tiếng Nhật (ja)**: Ngôn ngữ mặc định với từ vựng phong phú
|
|
292
|
+
- **Tiếng Anh (en)**: Hỗ trợ tiếng Anh toàn diện
|
|
293
|
+
- **Tiếng Việt (vi)**: Hỗ trợ tiếng Việt
|
|
391
294
|
|
|
392
|
-
|
|
295
|
+
Tính năng enhanced alt bao gồm từ vựng và quy tắc ngữ pháp theo ngôn ngữ cụ thể cho mô tả tự nhiên, phù hợp ngữ cảnh.
|
|
393
296
|
|
|
394
|
-
|
|
395
|
-
- **Hành vi mặc định**: Tự động tạo file `.backup` để an toàn
|
|
396
|
-
- **Tắt backup**: Sử dụng `--no-backup` để xử lý nhanh hơn
|
|
397
|
-
- **Bật rõ ràng**: Sử dụng `--backup` để rõ ràng về việc tạo backup
|
|
297
|
+
## 📚 Tài liệu
|
|
398
298
|
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
299
|
+
- [Hướng dẫn Enhanced Alt Features](./ENHANCED_ALT_FEATURES.md) - Tài liệu chi tiết cho tính năng enhanced alt attribute
|
|
300
|
+
- [Hướng dẫn bắt đầu nhanh](./QUICK_START.md) - Bắt đầu nhanh chóng
|
|
301
|
+
- [Tóm tắt Package](./PACKAGE_SUMMARY.md) - Tổng quan tất cả tính năng
|
|
302
|
+
- [Changelog](./CHANGELOG.md) - Lịch sử phiên bản và cập nhật
|
|
402
303
|
|
|
403
|
-
|
|
404
|
-
gbu-a11y --no-backup --comprehensive
|
|
304
|
+
## 🤝 Đóng góp
|
|
405
305
|
|
|
406
|
-
|
|
407
|
-
gbu-a11y --backup --comprehensive
|
|
408
|
-
```
|
|
306
|
+
Chúng tôi hoan nghênh đóng góp! Vui lòng tạo Pull Request. Đối với thay đổi lớn, vui lòng mở issue trước để thảo luận về những gì bạn muốn thay đổi.
|
|
409
307
|
|
|
410
|
-
###
|
|
411
|
-
- **Chế độ xem trước** để xem trước an toàn với `--dry-run`
|
|
412
|
-
- **Không phá hoại** - chỉ thêm attributes thiếu
|
|
413
|
-
- **Ngăn chặn trùng lặp** - không thêm attributes đã có
|
|
414
|
-
- **Xử lý lỗi** - tiếp tục xử lý khi có lỗi file riêng lẻ
|
|
415
|
-
|
|
416
|
-
## 🛠️ Cấu hình
|
|
417
|
-
|
|
418
|
-
### Package.json Scripts
|
|
419
|
-
```json
|
|
420
|
-
{
|
|
421
|
-
"scripts": {
|
|
422
|
-
"a11y:fix": "gbu-a11y",
|
|
423
|
-
"a11y:check": "gbu-a11y --dry-run",
|
|
424
|
-
"a11y:comprehensive": "gbu-a11y --comprehensive",
|
|
425
|
-
"a11y:forms": "gbu-a11y --forms-only",
|
|
426
|
-
"a11y:buttons": "gbu-a11y --buttons-only",
|
|
427
|
-
"a11y:links": "gbu-a11y --links-only",
|
|
428
|
-
"a11y:landmarks": "gbu-a11y --landmarks-only",
|
|
429
|
-
"a11y:headings": "gbu-a11y --headings-only",
|
|
430
|
-
"a11y:cleanup": "gbu-a11y --cleanup-only",
|
|
431
|
-
"cleanup-backups": "find . -name '*.backup' -type f -delete"
|
|
432
|
-
}
|
|
433
|
-
}
|
|
434
|
-
```
|
|
308
|
+
### Thiết lập phát triển
|
|
435
309
|
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
- name: Fix Accessibility Issues
|
|
443
|
-
run: npx gbu-accessibility-package --comprehensive
|
|
310
|
+
```bash
|
|
311
|
+
git clone https://github.com/dangpv94/gbu-accessibility-tool.git
|
|
312
|
+
cd gbu-accessibility-tool/accessibility-package
|
|
313
|
+
npm install
|
|
314
|
+
npm test
|
|
444
315
|
```
|
|
445
316
|
|
|
446
|
-
##
|
|
447
|
-
|
|
448
|
-
1. Fork repository
|
|
449
|
-
2. Tạo feature branch (`git checkout -b feature/amazing-feature`)
|
|
450
|
-
3. Commit thay đổi (`git commit -m 'Add amazing feature'`)
|
|
451
|
-
4. Push lên branch (`git push origin feature/amazing-feature`)
|
|
452
|
-
5. Mở Pull Request
|
|
453
|
-
|
|
454
|
-
## 📝 Giấy phép
|
|
317
|
+
## 📄 Giấy phép
|
|
455
318
|
|
|
456
319
|
Dự án này được cấp phép theo Giấy phép MIT - xem file [LICENSE](LICENSE) để biết chi tiết.
|
|
457
320
|
|
|
458
|
-
##
|
|
459
|
-
|
|
460
|
-
-
|
|
461
|
-
-
|
|
462
|
-
-
|
|
463
|
-
|
|
464
|
-
## 🏆 Tại sao chọn GBU Accessibility Package?
|
|
465
|
-
|
|
466
|
-
- ✅ **Không cần cấu hình** - Hoạt động ngay lập tức
|
|
467
|
-
- ✅ **Thông minh & nhận biết ngữ cảnh** - Không chỉ sửa chung chung
|
|
468
|
-
- ✅ **An toàn & đáng tin cậy** - Backup tự động và xem trước
|
|
469
|
-
- ✅ **Toàn diện** - Bao gồm tất cả vấn đề accessibility chính
|
|
470
|
-
- ✅ **Nhanh & hiệu quả** - Xử lý hàng loạt với báo cáo chi tiết
|
|
471
|
-
- ✅ **Tuân thủ WCAG** - Theo tiêu chuẩn accessibility
|
|
472
|
-
- ✅ **Hỗ trợ axe DevTools** - Sửa các lỗi phổ biến từ axe
|
|
473
|
-
- ✅ **Phân tích heading an toàn** - Đề xuất thay vì tự động sửa
|
|
474
|
-
- ✅ **Hỗ trợ đa ngôn ngữ** - Tiếng Nhật, tiếng Anh và có thể mở rộng
|
|
475
|
-
|
|
476
|
-
## 📋 Danh sách kiểm tra Accessibility
|
|
477
|
-
|
|
478
|
-
Package này giải quyết các vấn đề accessibility phổ biến từ axe DevTools:
|
|
479
|
-
|
|
480
|
-
### ✅ Đã hỗ trợ
|
|
481
|
-
- `image-alt` - Images must have alternate text
|
|
482
|
-
- `html-has-lang` - HTML element must have lang attribute
|
|
483
|
-
- `label` - Form elements must have labels (cơ bản)
|
|
484
|
-
- `button-name` - Buttons must have discernible text
|
|
485
|
-
- `link-name` - Links must have discernible text (cơ bản)
|
|
486
|
-
- `landmark-one-main` - Document should have one main landmark
|
|
487
|
-
- `region` - Page content should be contained by landmarks
|
|
488
|
-
- `heading-order` - Heading levels analysis (chỉ phân tích)
|
|
489
|
-
- Duplicate role attributes cleanup
|
|
490
|
-
|
|
491
|
-
### 🔄 Đang phát triển
|
|
492
|
-
- `color-contrast` - Color contrast checking
|
|
493
|
-
- `focus-order-semantics` - Focus order validation
|
|
494
|
-
- `aria-*` attributes validation
|
|
495
|
-
- Table accessibility features
|
|
496
|
-
- List structure validation
|
|
321
|
+
## 🙏 Ghi nhận
|
|
322
|
+
|
|
323
|
+
- Được xây dựng với các thực hành accessibility tốt nhất
|
|
324
|
+
- Tuân theo hướng dẫn WCAG
|
|
325
|
+
- Được truyền cảm hứng từ nhu cầu cải thiện accessibility tự động
|
|
326
|
+
- Phản hồi và đóng góp từ cộng đồng
|
|
497
327
|
|
|
498
328
|
---
|
|
499
329
|
|
|
500
|
-
|
|
330
|
+
**Được tạo với ❤️ bởi GBU Team**
|
|
331
|
+
|
|
332
|
+
Để biết thêm thông tin, hãy truy cập [GitHub repository](https://github.com/dangpv94/gbu-accessibility-tool) của chúng tôi.
|