Android (5.0.1) Chrome 正在删除 javascript 空白和评论,有没有办法阻止这种情况?
Posted
技术标签:
【中文标题】Android (5.0.1) Chrome 正在删除 javascript 空白和评论,有没有办法阻止这种情况?【英文标题】:Android (5.0.1) Chrome is deleting javascript whitespace and comments, is there a way to stop this? 【发布时间】:2015-02-27 15:03:28 【问题描述】:除了使调试几乎不可能之外,这种新行为还破坏了我使用 heredoc javascript 技术 (Javascript heredoc) 的网站,这取决于使用 cmets。
我不确定我是否无意中打开了此功能(这种情况很少见),或者这是否是 android 的一项新功能。我很担心,因为我在许多不同的网站上使用了 heredoc javascript 技术,这种行为会破坏这些网站。
有其他人经历过吗?
是否有一种解决方法可以让服务器停止这种情况?
heredoc javascript 技术有替代方法吗?
【问题讨论】:
可能是developer.chrome.com/multidevice/data-compression引起的 【参考方案1】:我是 Google 压缩代理的技术主管。我们的代理确实从 JS 文件中删除了 cmets,这应该是安全的 - 尽管有一些工具(在我看来 :-) 依赖于 JS cmets 来工作。一般来说,没有很好的方法来检测这一点,所以我们依赖 Cache-Control: no-transform 标头。如果您对避免这种情况的更好方法有建议,我将不胜感激。
【讨论】:
【参考方案2】:这个问题是由 chrome 数据压缩 (https://developer.chrome.com/multidevice/data-compression) 引起的。感谢Slaks 的提醒,否则我会错过它。
一旦我将其关闭 - 它位于 Chrome 设置 - 减少数据使用量(在内容设置之后和关于 Chrome 之前),我的网站又开始工作了。
为了让其他喜欢我的用户甚至不知道他们正在使用它, 我添加了以下代码,我在下面的两个参考资料中找到了:
<FilesMatch "\.(css|js)$">
<IfModule mod_headers.c>
Header set Pragma "public"
Header set Cache-Control "no-transform,public, must-revalidate, proxy-revalidate"
</IfModule>
FileETag MTime Size
</FilesMatch>
重要的部分是通过 Cache-Control 指令告诉 Google 在 javascript 上“不转换”。我对 .js 和 .css 文件都这样做了,不过我以后可能会添加其他类型。
而且,我将 headers.load 添加到 mods-available 中,以使其具有 mod_headers。
http://mobiforge.com/design-development/setting-http-headers-advise-transcoding-proxies
Apache -Caching: How to Configure Response headers in Apache 2+.
重启 Apache 后,一切正常。
关于第三个问题,javascript heredoc方法是否有解决方法,我真的没有答案,但也许这种情况表明这种方法并非没有问题。
【讨论】:
以上是关于Android (5.0.1) Chrome 正在删除 javascript 空白和评论,有没有办法阻止这种情况?的主要内容,如果未能解决你的问题,请参考以下文章
keyup 无法在 Android 上的 Chrome 上运行