1

在有人使用google translate dropdown将我的网站翻译成另一种语言后,我想执行一个 jQuery 函数。这是我没有运气的尝试:

$('document').ready(function () {
   $(".goog-te-menu-value").change(function() {
       alert("My code is working!");
   });
});

在正常的下拉列表中,这可以正常工作,但我无法定位谷歌翻译 div .. 因为我相信它在 iframe 中。无论如何要针对 iframe 中的 div 以在 jQuery 中使用?或者也许是另一种解决方法?如果有人对此有任何想法,将不胜感激。

4

2 回答 2

0

我知道这是旧的,但我最近一直在研究这个,它可能会帮助一些人。

您的代码的问题是您将侦听器绑定在文档准备就绪时不存在的元素上,尽管该.change()方法在技术上是一种快捷方式,因为.on()您在 dom 中还没有走得足够高以允许这种“未来” ' 除了 dom。

所以你的代码应该是:

$('#google_translate_element').on('change','select.goog-te-combo',function(e){ console.log($(this).val()); /* or  alert($(this).val()); */ });

这将允许选择框在谷歌添加时绑定更改侦听器。

它在我目前工作的网站上完美运行。

于 2015-04-22T11:03:55.813 回答
0

我也刚刚将谷歌翻译小部件添加到我的网站,当然,它破坏了布局!

所以我查看了小部件使用的脚本。

首先,您不能向按钮添加事件侦听器,因为 Google 翻译小部件已经分配了一个。

其次,我发现在它翻译之后,GT 小部件将标签设置为有一个类。

所以,我给我的标签一个“docstart” id 并创建了以下脚本。

注意:这破坏了 Firefox v. 21,但它在 IE 9 中有效。我还没有在任何其他浏览器中测试过它。

function LayoutFix() {
// code here to fix your layout
myListener();
};
function waitForGoogle() {
setTimeout (function myListener() {
var e = document.getElementById('docstart').className;
var l = e;
window.setInterval(function() {   
var cN = e.className;
if (cN !== l)
// Call function to fix the layout on class change
LayoutFix();
// Set a 10 second iteration
},10000);
// Set a 10 second wait for GT widget to load
},10000);
}
// Finally, load the listener on document.ready()
$(document).ready(waitForGoogle);
于 2013-06-07T17:04:46.233 回答