- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试向 Drupal 中的 Gtranslate 模块添加附加功能,使其成为语言切换 block 。当点击 gtranslate block 时,url 也会重定向到所需的语言版本,如 ****/es/****。这样,我可以使用 gtranslate 模块来处理不重要的文本,但使用实体翻译来为重要内容提供精确的人工翻译。
我通过编写一个新的 js 并将单击事件附加到 gtranslate block 项来做到这一点。我用的是
window.location.replace();
重定向页面。该功能在 Firefox 中运行良好。然而,在 Chrome 中,它是随机工作的。 (重定向始终有效,但谷歌翻译框架有时不显示。)
控制台日志捕获错误,这是
"Uncaught TypeError: Cannot read property 'G' of undefined".
谷歌翻译框架也是一个js文件。并且翻译框架是由iframe渲染的。我已经尝试过
$('iframe').load(function(){...});
但这将禁用重定向代码。不知道现在该去哪里。
希望有人遇到过同样的问题并提供解决方案。
非常感谢。
最佳答案
如果有人遇到同样的问题,这是我对此问题的解决方案。
这是由异步脚本加载顺序引起的。谷歌翻译脚本从谷歌CDN加载,自定义脚本从Drupal加载。通常,自定义脚本的加载速度比谷歌翻译脚本更快。因此,当您在自定义脚本中触发谷歌翻译事件时,它无法找到谷歌翻译脚本中定义的变量。
理想的解决方案是使用promise
或callback
函数使异步加载按正确的顺序进行。当我修复它时,我没有那么多知识。因此,我只是在加载谷歌翻译脚本后使用 setTimeOut(function () {}, 500)
异步运行我的自定义脚本。
这不是一个完美的解决方案,甚至不是一个好的解决方案,但它做到了我想要的。如果我遇到类似的问题,我将来会发布更好的解决方案。
关于javascript - Chrome 中的 Gtranslate 模块 "Cannot read property ' G' 为未定义错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32126818/
我是一名优秀的程序员,十分优秀!