* 查找所有匹配的字段(用于密码等需要填写多次的字段)
(fieldName)
| 128 | * 查找所有匹配的字段(用于密码等需要填写多次的字段) |
| 129 | */ |
| 130 | function findAllFields(fieldName) { |
| 131 | const selectors = FIELD_SELECTORS[fieldName] || []; |
| 132 | const elements = []; |
| 133 | |
| 134 | for (const selector of selectors) { |
| 135 | try { |
| 136 | const allElements = document.querySelectorAll(selector); |
| 137 | allElements.forEach(element => { |
| 138 | if (isVisible(element) && !element.disabled && !element.readOnly) { |
| 139 | // 避免重复添加 |
| 140 | if (!elements.includes(element)) { |
| 141 | elements.push(element); |
| 142 | } |
| 143 | } |
| 144 | }); |
| 145 | } catch (e) { |
| 146 | console.log('[GeoFill] Selector error:', selector, e); |
| 147 | } |
| 148 | } |
| 149 | |
| 150 | return elements; |
| 151 | } |
| 152 | |
| 153 | /** |
| 154 | * 检查元素是否可见 |