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 空白和评论,有没有办法阻止这种情况?的主要内容,如果未能解决你的问题,请参考以下文章

如何再chrome上运行android应用

keyup 无法在 Android 上的 Chrome 上运行

Chrome 自定义选项卡 - 未触发意图 (Android)

从 Chrome 文件系统播放视频不适用于 Android

允许访问单个 URL Android Chrome

Android 上 Chrome 61+ 中的导航被阻止错误