我正在玩一个
javascript,并且遇到错误.错误是这样的:
后缀操作中的左侧表达式无效.
脚本很长,但我认为这是这个问题.奇怪的是,当我在本地运行它时,这是有用的,但是当它被打包时,使用asset_packager,它会失败.
任何想法为什么我可能会得到这个错误?
更新:做了更多的研究后,我发现了这个功能.错误似乎发生在“while”语句之后,我认为它是“a”.这是一个插件,所以我不想去搞乱代码,但你可以这样做吗?
m.getInternetExplorerMajorVersion = function() { var a = m.getInternetExplorerMajorVersion.cached = typeof m.getInternetExplorerMajorVersion.cached != "undefined" ? m.getInternetExplorerMajorVersion.cached : function() { var a = 3,b = d.createElement("div"),c = b.getElementsByTagName("i"); while ((b.innerHTML = "<!--[if gt IE "++ + a + "]><i></i><![endif]-->") && c[0]) Uncaught ReferenceError: Invalid left-hand side expression in postfix operation ; return a > 4 ? a : !1 }(); return a }
解决方法
你没有说出哪个插件,但是我正在处理同样的问题,Jeffrey,我认为同一个插件,因为我的代码看起来几乎相同.
我跟着你的领先.该插件是History.js,从页面:
https://github.com/browserstate/History.js/和我正在使用捆绑的html4 html5版本,这是最小化,但是正在通过我的内部gzip压缩.
我改变了那个片段
innerHTML="<!--[if gt IE "+ ++a+"]><i></i><![endif]-->"
成
innerHTML="<!--[if gt IE "+ (++a)+"]><i></i><![endif]-->"
而且做了这个工作!
我开始想知道究竟是什么问题.最重要的嫌疑人当然是gzip.正常情况下,代码正确
var a=0; "begining of string "+ ++a+" the rest of string";
并返回“开始字符串1的其余字符串”
然而,gzip压缩可以摆脱空白,并将其转换为浏览器所理解的东西:
var a=0;"begining of string "+++a+" the rest of string";
什么给我们错误Uncaught ReferenceError:在后缀操作中无效的左侧表达式
正如我所想 – 这是gzip的问题.它删除了一个白色字符太多.在PHP版本5.4.8-1上使用方法gzencode($content,9,FORCE_GZIP)