首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >关闭翻译栏后,将CSS更改重新应用到Google翻译小部件

关闭翻译栏后,将CSS更改重新应用到Google翻译小部件
EN

Stack Overflow用户
提问于 2021-03-22 16:48:42
回答 1查看 336关注 0票数 0

我正在修改Google翻译小部件的文本和CSS,并且在使用addEventListenerquerySelector重新应用CSS和在关闭Google翻译栏之后以及当页面返回到原始语言时出现了一个错误。

我突然收到一个错误Uncaught TypeError: x.X is undefined指向这条线

x.X.querySelector('select').addEventListener('change', (event) => {

此新错误可能是由于jQuery主库更新造成的。

如何定义x.X

感谢caramba对我先前问题的回答,Modifying output of google.translate.TranslateElement.InlineLayout.VERTICAL和他在下面链接的Fiddle中的后续活动。

小提琴:https://jsfiddle.net/8m2xkez4/

Javascript:

代码语言:javascript
复制
var observer = new MutationObserver(function (event) {
  if(false === document.documentElement.classList.contains('translated-ltr')) {
      renameGoogleSelectDropdown();
  }
});

var renameGoogleSelectDropdown = function(){
    function cleartimer() {     
      setTimeout(function(){ 
          window.clearInterval(myVar); 
      }, 500);             
  }
  function myTimer() {
      if ($('.goog-te-combo option:first').length) {
          $('.goog-te-combo option:first').html('Translate');
          cleartimer();
      }
  }
  var myVar = setInterval(function(){ myTimer() }, 0); 
};


function googleTranslateElementInit() {
  var x = new google.translate.TranslateElement({
  pageLanguage: 'en', includedLanguages: 'af,ach,ak,am,ar,az,be,bem,bg,bh,bn,br,bs,ca,chr,ckb,co,crs,cs,cy,da,de,ee,el,en,eo,es,es-419,et,eu,fa,fi, fo,fr,fy,ga,gaa,gd,gl,gn,gu,ha,haw,hi,hr,ht,hu,hy,ia, id,ig,is,it,iw,ja,jw,ka,kg,kk,km,kn,ko,kri,ku,ky,la, lg,ln,lo,loz,lt,lua,lv,mfe,mg,mi,mk,ml,mn,mo,mr,ms,mt, ne,nl,nn,no,nso,ny,nyn,oc,om,or,pa,pcm,pl,ps,pt-BR, pt-PT,qu,rm,rn,ro,ru,rw,sd,sh,si,sk,sl,sn,so,sq,sr, sr-ME,st,su,sv,sw,ta,te,tg,th,ti,tk,tl,tn,to,tr,tt, tum,tw,ug,uk,ur,uz,vi,wo,xh,yi,yo,zh-CN,zh-TW,zu',
  layout: google.translate.TranslateElement.InlineLayout.VERTICAL
  }, 'google_translate_element');
  

  x.X.querySelector('select').addEventListener('change', (event) => {
    observer.observe(event.target.closest('html'), {
      attributes: true, 
      attributeFilter: ['class'],
      childList: false, 
      characterData: false
    })
    });
}


$(window).on('load', function() {
  $('.goog-te-gadget').html($('.goog-te-gadget').children());
  $("#google-translate").fadeIn('1000');
    renameGoogleSelectDropdown();
});

HTML:

代码语言:javascript
复制
<div id="google-translate">
  <div id="google_translate_element"></div>
</div>

CSS:

代码语言:javascript
复制
#google-translate {
  display: none;
}

编辑8/5/21

-- :(当我使用console.log(x)时,得到了ReferenceError: x is not defined

如何在Google小部件Javascript中找到新的类名?在这里: pastebin.com/xWVES3r1

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-03-24 20:23:45

在这里,记录x,您将在对象querySelector下找到Vx.V.querySelector('select').addEventListener('change', (event) => {

把这个问题解决了。

但这似乎是生成的类名,因此它容易更改。document.querySelector('select').addEventListener('change', (event) => {

如果您不在其他任何地方使用select,则工作正常。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66750367

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档