我面临一个有点奇怪的问题。我正在使用 bing 翻译器(http://www.bing.com/widget/translator http://www.bing.com/widget/translator)并尝试使用他们的 API 自行定制它。
这是我用于测试目的的代码。
Script:
$(document).ready(function (e) {
var lang;
$('#changeLang a').click(function (e) {
Microsoft.Translator.Widget.Translate(null, 'en', null, null, function () {
lang = Microsoft.Translator.Widget.GetAutoDetectedLanguage();
alert(lang)
});
document.getElementById('WidgetFloaterPanels').style.display = 'none';
var to = $(this).attr('id');
if (to == "en") {
Microsoft.Translator.Widget.Translate(lang, 'en');
document.getElementById('WidgetFloaterPanels').style.display = 'none';
} else if (to == "ja") {
Microsoft.Translator.Widget.Translate(lang, 'ja');
document.getElementById('WidgetFloaterPanels').style.display = 'none';
} else if (to == "fr") {
Microsoft.Translator.Widget.Translate(lang, 'fr');
document.getElementById('WidgetFloaterPanels').style.display = 'none';
} else if (to == "ru") {
Microsoft.Translator.Widget.Translate(lang, 'ru');
document.getElementById('WidgetFloaterPanels').style.display = 'none';
}
});
}); //ready ends
HTML:
<div id="changeLang">
<a href="#" id="en">English</a>
<a href="#" id="ja">Japenese</a>
<a href="#" id="fr">French</a>
<a href="#" id="ru">Russia</a>
</div>
<div>This paragraph needs to be translated</div>
现在,脚本运行良好,但前两次是这样。例如,如果我单击日语,页面将进行相应翻译,如果我单击返回英语或任何其他语言,页面将进行相应翻译。但第二次之后,如果我第三次点击任何语言。该功能不起作用。但它应该像前两次点击一样工作。我已经尝试了几个小时,但无法让它工作,所以我提出了问题。请有人指出我哪里出了问题。
Microsoft 脚本似乎在翻译过程中更改了 HTML 结构。因此,您必须使用委托:而不是$("#changeLang a").on("click", handler)
你会去做的$('#changeLang').on("click", "a", handler)
。此外,您的代码可以简化:
var lang;
$('#changeLang').on("click", "a", function (e) {
var to = $(this).attr('id');
console.log("Translating from ", lang, " to ", to);
Microsoft.Translator.Widget.Translate(lang, to);
lang = to;
});
JSFIDDLE http://jsfiddle.net/8q7TN/
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)