2017-07-10 33 views
2

我有以下網頁,將http流量重定向到httpsHTML和Javascript執行順序

<head> 
<script type="text/javascript"> 
    var loc = window.location.href+''; 
    if (loc.indexOf('http://www.') == 0 && loc.indexOf('.com') > -1) { 
     window.location.href = loc.replace('http://www.','https://www.'); 
    } else if (loc.indexOf('http://') == 0 && loc.indexOf('.com') > -1 && loc.indexOf('www.') == -1) { 
     window.location.href = loc.replace('http://','https://www.'); 
    } 
</script> 
</head> 
<body> 
    ... 
</body> 

問題

我已經放在HTML body上面的重定向的JavaScript。這是否意味着在body嘗試加載之前頁面將被重定向?

我想盡可能提高此代碼的效率。

任何意見讚賞。

+8

如果您想要效率,請使用服務器端重定向。 –

+0

_「這是否意味着頁面會在正文加載前重定向?」_是 – j08691

+0

感謝Jonas,我在AWS ELB上託管我的頁面。我已經嘗試了大約一週的時間來獲取服務器端重定向工作,但似乎無法得到它,所以這是我的最後一招。 – Richard

回答

2

要回答你的問題,是的,該腳本將在它下面的所有內容之前執行。但是,如果Javascript被禁用或不受支持,您將遇到問題。

通常,我會建議您使用服務器端重定向。如果你知道PHP,那是一個簡單的選擇。如果你不這樣做,並且這是在Apache託管的服務器上(本地主機或外部),我想你可以使用一個.htaccess file也許你的網絡主機的CPANEL可以不用編輯任何東西。例如,某些CPANEL可以選擇自動重定向HTTP鏈接HTTPS。如果您的CPANEL沒有,您可以(我想)使用您的CPANEL提供的任何選項將每個HTTP頁面重定向到HTTPS。

如果你絕對必須有最有效的選擇,它的.htaccess(雖然這也是最痛苦的,所以我會建議的cPanel或PHP,如果你提供這些選項。)

1

HTML頁面從左到右,從上到下進行處理,除非有相反的具體說明。

鑑於您的JavaScript未封裝在函數中或被指定爲回調函數,它將在它之後的HTML之前運行。

1

通過設置window.location .href你告訴瀏覽器離開, 所以不管你有什麼不會被執行。很明顯,如果你之前有一些東西(CSS,其他腳本,...),它將會被處理。

的事情是,瀏覽器可能已經開始下載/開始執行任何腳本之前分析其他資源(這取決於發動機。)

,最好的辦法是重定向服務器端,使其更快,除非邏輯必須位於您的Web應用程序中。

More info