我正在尝试向Drupal中的Gtranslate模块添加额外的功能,使其成为语言切换块。单击gtranslate块时,url也将重定向到所需的语言版本,例如*/es/*。这样,我就可以对不重要的文本使用gtranslate模块,而使用实体翻译来为重要的内容提供精确的人工翻译。
为此,我编写了一个新的js,并将单击事件附加到gtranslate块项。我使用
window.location.replace(); 若要重定向页,请执行以下操作。该函数在Firefox中运行良好。然而,在Chrome中,它是随机工作的。(重定向总是有效的,但谷歌翻译框架有时不会显示。)
控制台日志捕获一个错误,该错误为
"Uncaught TypeError: Cannot read property 'G' of undefined". google翻译框架也是一个js文件。所述翻译框架由iframe呈现。我已经试过了
$('iframe').load(function(){...});但这将禁用重定向代码。不知道我现在该去哪。
希望有人遇到同样的问题之前,并将提供一个解决方案。
非常感谢。
发布于 2017-08-31 14:59:47
如果有人面临同样的问题,我在这里解决这个问题。
这是由异步脚本加载顺序引起的。google翻译脚本从google加载,自定义脚本从Drupal加载。通常情况下,自定义脚本的加载速度要比google翻译脚本快。因此,当您在自定义脚本中触发一个google翻译事件时,它将找不到在google翻译脚本中定义的变量。
一个理想的解决方案是使用promise或callback函数使异步加载按正确的顺序进行。当我修好它时,我没有那么多的知识。因此,我只是使用setTimeOut(function () {}, 500)来异步运行我的自定义脚本后,谷歌翻译脚本加载。
这不是一个完美的,甚至不是一个好的解决方案,但它做了我想要的。如果我要面对类似的问题,我会在将来发表我更好的解决方案。
https://stackoverflow.com/questions/32126818
复制相似问题