为什么Microsoft Bing Translator部署后无法在网站页面正常显示?
问题解决方案
1. 修复JavaScript语法错误
你提供的代码中异步加载脚本的函数多写了一层大括号,属于语法错误,会直接导致脚本无法执行。将setTimeout(function(){{改为setTimeout(function(){,末尾对应的多余大括号也删除即可。
2. 替换为站点专属的siteData参数
代码中的siteData=ueOIGRSKkd965FeEGM5JtQ**是官方示例的绑定值,和具体站点域名强绑定,直接复用会导致组件加载请求被拒绝。你需要重新在Bing站长工具的翻译器配置页,输入自己的站点域名生成专属的siteData值替换现有参数。
3. 检查容器显隐规则
你放置组件的div父容器带有hidden-xs hidden-sm类,这是Bootstrap的响应式隐藏类,在屏幕宽度小于768px的移动设备上会自动隐藏整个容器,如果你在小屏设备测试会看不到组件,可根据需求删除这两个类解除隐藏限制。
4. 调整脚本加载时机
当前你将脚本放在header中执行,可能出现组件DOM还未渲染完成就加载翻译脚本的情况,导致脚本找不到对应ID的容器无法挂载。可以把整段script代码移到</body>标签之前,或者将触发逻辑改为监听DOM加载完成后执行:
document.addEventListener('DOMContentLoaded', function() { var s=document.createElement('script'); s.type='text/javascript'; s.charset='UTF-8'; s.src=((location && location.href && location.href.indexOf('https') == 0)?'https://ssl.microsofttranslator.com':'http://www.microsofttranslator.com')+'/ajax/v3/WidgetV3.ashx?siteData=替换为你自己的siteData值&ctf=False&ui=true&settings=Manual&from='; var p=document.getElementsByTagName('head')[0]||document.documentElement; p.insertBefore(s,p.firstChild); })
5. 检查内容安全策略(CSP)拦截
如果你的站点配置了CSP规则,需要在规则中添加允许加载microsofttranslator.com域名下的脚本、样式和iframe资源,否则浏览器会拦截组件的加载请求。
内容的提问来源于stack exchange,提问作者Roberto Flores
相关产品推荐
相关产品推荐

