Javascript Gtranslate模块“;无法读取属性';G';“未定义”的定义;Chrome中的错误

Javascript Gtranslate模块“;无法读取属性';G';“未定义”的定义;Chrome中的错误,javascript,jquery,google-chrome,drupal-modules,Javascript,Jquery,Google Chrome,Drupal Modules,我正在尝试向Drupal中的Gtranslate模块添加额外的函数,使其成为语言切换块。单击gtranslate块时,url也将重定向到所需的语言版本,如****/es/***。这样,我就可以对不重要的文本使用gtranslate模块,但对重要内容使用实体翻译提供精确的人工翻译 为此,我编写了一个新的js,并将click事件附加到gtranslate块项。我用 window.location.replace(); 重定向页面。该函数在Firefox中运行良好。然而,在Chrome中,它是随机

我正在尝试向Drupal中的Gtranslate模块添加额外的函数,使其成为语言切换块。单击gtranslate块时,url也将重定向到所需的语言版本,如****/es/***。这样,我就可以对不重要的文本使用gtranslate模块,但对重要内容使用实体翻译提供精确的人工翻译

为此,我编写了一个新的js,并将click事件附加到gtranslate块项。我用

window.location.replace(); 
重定向页面。该函数在Firefox中运行良好。然而,在Chrome中,它是随机工作的。(重定向始终有效,但google translate框架有时不显示。)

控制台日志捕获一个错误,该错误为

"Uncaught TypeError: Cannot read property 'G' of undefined". 
谷歌翻译框架也是一个js文件。而平移帧由iframe渲染。我已经试过了

$('iframe').load(function(){...});
但这将禁用重定向代码。我不知道我现在该去哪里

希望有人遇到同样的问题之前,将提供一个解决方案


非常感谢。

如果有人面临同样的问题,这里是我对这个问题的解决方案

这是由异步脚本加载顺序引起的。GoogleTranslate脚本从GoogleCDN加载,自定义脚本从Drupal加载。通常,自定义脚本的加载速度比google translate脚本快。因此,当您在自定义脚本中触发google translate事件时,它无法找到google translate脚本中定义的变量

理想的解决方案是使用
promise
callback
函数以正确的顺序进行异步加载。当我修好它的时候,我没有那么多的知识。所以我只需使用
setTimeOut(function(){},500)
在加载GoogleTranslate脚本后异步运行我的自定义脚本

这不是一个完美的解决方案,甚至不是一个好的解决方案,但它做到了我想要的。如果我会面对类似的问题,我会在将来发布我更好的解决方案