| 1809 | Object.defineProperty(HTMLInputElement.prototype, 'value', { |
| 1810 | ...translate.listener.input.originalValueDescriptor, |
| 1811 | set(newValue) { |
| 1812 | const oldValue = this.value; // this指向当前被修改的input |
| 1813 | |
| 1814 | // 执行原生赋值 |
| 1815 | translate.listener.input.originalValueDescriptor.set.call(this, newValue); |
| 1816 | |
| 1817 | // 值变化时触发逻辑 |
| 1818 | if (newValue !== oldValue) { |
| 1819 | //console.log(`JS修改了input值:`); |
| 1820 | //console.log(` 旧值=${oldValue} → 新值=${newValue}`); |
| 1821 | //console.log(this) |
| 1822 | |
| 1823 | //如果有 translate.node 历史,要根据历史判定一下,如果当前不是translate.js 导致的改变,那就是其他js触发的,那么将其删掉,这样才能触发它重新翻译 |
| 1824 | if(translate.node.find(this)){ |
| 1825 | var nodeData = translate.node.get(this); |
| 1826 | |
| 1827 | if(typeof(nodeData.lastTranslateRenderTime) === 'number' && Date.now() - nodeData.lastTranslateRenderTime < 100){ |
| 1828 | //小于100毫秒,这是 translate.js 引起的改动,不需要任何处理 |
| 1829 | }else{ |
| 1830 | //不是 translate.js 引起的,那么需要进行翻译 |
| 1831 | //删掉当前的记录,以便能正常扫描加入翻译 |
| 1832 | translate.node.delete(this); |
| 1833 | } |
| 1834 | |
| 1835 | } |
| 1836 | translate.execute([this]); |
| 1837 | } |
| 1838 | } |
| 1839 | }); |
| 1840 | |
| 1841 | }, |