2017-09-13 48 views
0

我有一個網站,HTML和CSS構建的平臺完全鎖定。我獲得了對應用程序/服務器層的零訪問權限。防止CSS根本加載

有跡象表明,獲得由平臺所服務的幾個CSS文件,我已經他們剝出一點點的jQuery

$(document).ready(function() { 
    $('link[rel=stylesheet][href*="UserGlobal"]').remove(); 
}); 

雖然這工作,防止「UserGlobal」樣式從具有任何影響我的頁面展示仍然會加載。

我的問題是,在沒有訪問應用程序層/服務器端的東西時,是否有辦法阻止CSS文件首先被傳送到瀏覽器?

我的直覺告訴我不 - 但我會有興趣聽到有沒有人遇到類似的東西並解決它。

+0

通過PHP也許...你需要解析頁面,刪除該樣式表然後重新提供頁面。 JS是前端,所以它不會像那樣工作 – clearshot66

+0

從html頁面中刪除樣式表,並且當你希望包含它時,使用下面這個問題中的答案https://stackoverflow.com/questions/574944/how-to -load-up -css-files-using-javascript –

+0

@DavidLee我很欣賞這種迴應。如果它像從HTML頁面中移除它一樣簡單,我會擁有。我實際上沒有辦法到達現在提供文件的地方,不告訴它,這是問題的根源。 – HisPowerLevelIsOver9000

回答

0

如果在HTML頁面上已經包含CSS(使用<link><style>標記),則僅使用JavaScript無法阻止瀏覽器加載CSS文件。

如果您想阻止瀏覽器加載它,您需要一些方法來更改Web服務器的HTTP響應(即刪除CSS)。

0

那麼,這取決於你有多少願意擺脫正常的做事方式。如果您主要關心的是要避免下載不必要的資源,您可以在確定是否需要某個樣式表後動態地將<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>的技術應該可以正常工作。

+0

注意:您必須在jQuery中使用document.ready(),因爲jquery通常是需要加載的單獨文件。 Plain JS是本機的,它可以在任何需要的時候運行 - 不需要等待。 – Ringo

+0

這不一定是真的。如果您在''中加載加載jQuery並在之後立即運行該腳本,它將在'load'事件觸發之前運行。 –

+0

我想那是真的,是的 – Ringo