有人在尝试在 Internet Explorer 8 (IE8) 上运行 Twitter For Web widgets.js 时遇到 JavaScript 错误吗? 如果是这样,您知道如何解决这个问题或如何优雅地处理它吗?
代码 只需添加此加载 widgets.js 文件的代码块,就会在 IE8 上引发错误:
<script>
window.twttr = (function (d, s, id) {
var t, js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) return;
js = d.createElement(s); js.id = id;
js.src= "https://platform.twitter.com/widgets.js";
fjs.parentNode.insertBefore(js, fjs);
return window.twttr || (t = { _e: [], ready: function (f) { t._e.push(f) } });
}(document, "script", "twitter-wjs"));
</script>
我在以下位置获得了这段代码:https://dev.twitter.com/web/javascript/loading
IE8 错误
Webpage error details
User Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E) Timestamp: Thu, 29 Jan 2015 00:54:28 UTC
Message: Script error Line: 0 Char: 0 Code: 0 URI: https://platform.twitter.com/widgets.js
这没有帮助,但在 Developer 工具中的脚本下,我收到以下消息:
(X) Expected identifier widgets.js, line 1 character 29036
我还调查发现 Twitter 在去年(2014 年)停止了对 IE7 的全面支持,并在 2015 年 1 月早些时候停止了对 IE8 的支持。我不确定这是否是他们的 widgets.js 导致错误的原因,但是我仍然需要找出加载此脚本而不在 IE8 上引发错误的最佳方法。谢谢!
最佳答案
找到解决方案,
在widgets.js中,有一个名为“delete”的方法(第364行)
"delete": function(t) {
var e = i(t),
n = this.get(e.slice(0, -1));
n && delete n[e.slice(-1)]
},
这个方法在第 1364 行调用
l.delete(["callbacks", t.callbackName])
删除在Reserved Words list .因此它会导致“预期标识符”错误。
首先,将widgets.js带到你自己的主机上。
js.src= "http://www.yourdomain.com/widgets.js";
在此处更改为您的域。
After or before that step In widgets.js, have to change "delete" method name and caller line.
关于javascript - Twitter widgets.js 在 IE8 上抛出 JavaScript 错误 "Expected identifier",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28205278/