防止CSS根本加载
问题描述:
我有一个网站,HTML和CSS构建的平台完全锁定。我获得了对应用程序/服务器层的零访问权限。防止CSS根本加载
有迹象表明,获得由平台所服务的几个CSS文件,我已经他们剥出一点点的jQuery
$(document).ready(function() {
$('link[rel=stylesheet][href*="UserGlobal"]').remove();
});
虽然这工作,防止“UserGlobal”样式从具有任何影响我的页面展示仍然会加载。
我的问题是,在没有访问应用程序层/服务器端的东西时,是否有办法阻止CSS文件首先被传送到浏览器?
我的直觉告诉我不 - 但我会有兴趣听到有没有人遇到类似的东西并解决它。
答
如果在HTML页面上已经包含CSS(使用<link>
或<style>
标记),则仅使用JavaScript无法阻止浏览器加载CSS文件。
如果您想阻止浏览器加载它,您需要一些方法来更改Web服务器的HTTP响应(即删除CSS)。
答
那么,这取决于你有多少愿意摆脱正常的做事方式。如果您主要关心的是要避免下载不必要的资源,您可以在确定是否需要某个样式表后动态地将<link>
s注入到您的页面中。下面是介绍如何创建使用普通<link>
小号的JavaScript,以及如何将它们插入到DOM的页面:
https://www.giftofspeed.com/defer-loading-css/
另外,请记住,如果它发生你不需要的document.ready()为时已晚。只是作为一个例子,这种平淡的js代码片段可以在任何地方插入到一个网页,并会立即运行 - 之前DOM已准备就绪:
<script>
var links = document.getElementsByTagName("link");
links[0].parentNode.removeChild(links[0]);
</script>
我测试过它,它不会阻止外部CSS文件下载,但是我不清楚下载的文件是否真正被解析并“加载”到浏览器中。尽管如此,如果您需要使用它,那么您动态注入<link>
的技术应该可以正常工作。
通过PHP也许...你需要解析页面,删除该样式表然后重新提供页面。 JS是前端,所以它不会像那样工作 – clearshot66
从html页面中删除样式表,并且当你希望包含它时,使用下面这个问题中的答案https://stackoverflow.com/questions/574944/how-to -load-up -css-files-using-javascript –
@DavidLee我很欣赏这种回应。如果它像从HTML页面中移除它一样简单,我会拥有。我实际上没有办法到达现在提供文件的地方,不告诉它,这是问题的根源。 – HisPowerLevelIsOver9000