在w3c官方给出的demo里尝试了一下,无论添加几个Google Translate标签,始终只会渲染首个Google Translate标签
需要在script标签里添加一下代码,即可解决:
<script type="text/javascript">
trackChange = null;
pageDelayed = 3000;
Element.prototype._addEventListener = Element.prototype.addEventListener;
Element.prototype.addEventListener = function(a,b,c) {
reset = false;
if (a == 'change'){
trackChange = b;
reset = true;
}
if(c==undefined)
c=false;
this._addEventListener(a,b,c);
if(!this.eventListenerList)
this.eventListenerList = {};
if(!this.eventListenerList[a])
this.eventListenerList[a] = [];
this.eventListenerList[a].push({listener:b,useCapture:c});
if (reset){
Element.prototype.addEventListener = Element.prototype._addEventListener;
}
};
function googleTranslateElementInit() {
new google.translate.TranslateElement({ pageLanguage: 'en' }, 'google_translate_element');
let first = $('#google_translate_element');
let second = $('#google_translate_element2');
let nowChanging = false;
setTimeout(function(){
select = first.find('select');
second.html(first.clone());
second.find('select').val(select.val());
first.find('select').on('change', function(event){
if (nowChanging == false){
second.find('select').val($(this).val());
}
return true;
});
second.find('select').on('change', function(event){
if (nowChanging){
return;
}
nowChanging = true;
first.find('select').val($(this).val());
trackChange();
setTimeout(function(){
nowChanging = false;
}, 1000);
});
}, pageDelayed);
}
</script>