HTML和Javascript执行顺序

时间:2017-07-10 16:36:08

标签: javascript html

我有以下网页将http流量重定向到https

<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>

问题

我已将重定向javascript放在html body上方。这是否意味着在body尝试加载之前页面将被重定向?

我正在努力使这段代码尽可能高效。

任何建议都表示赞赏。

3 个答案:

答案 0 :(得分:2)

要回答您的问题,是的,脚本将在其下方的所有内容之前执行。但是,如果禁用或不支持Javascript,则会出现问题。

通常,我建议您使用服务器端重定向。如果你了解PHP,这是一个简单的选择。如果你没有,这是在Apache托管的服务器上(本地主机或外部主机),我想你可以使用.htaccess file你的webhost的CPANEL也可能允许你做这没有编辑任何东西。例如,某些CPANEL具有自动重定向HTTP链接HTTPS的选项。如果您的CPANEL没有,您可以(我猜)使用CPANEL为您提供的任何选项将每个HTTP页面重定向到HTTPS。

如果你绝对必须拥有最有效的选择,那就是.htaccess(虽然这也是最痛苦的,所以如果你获得这些选择,我会推荐CPANEL或PHP。)

答案 1 :(得分:1)

HTML页面从左到右,从上到下进行处理,除非有相反的具体说明。

鉴于您的JavaScript未封装在函数中或被指定为回调,它将在其后的HTML之前运行。

答案 2 :(得分:1)

通过设置window.location.href,您告诉浏览器离开, 所以无论你拥有什么,都不会被执行。显然,如果你之前有某些东西(css,其他脚本......),它就已经被处理了。

问题是浏览器可能在开始执行任何脚本之前开始下载/解析其他资源(这取决于引擎。)

最好的方法是重定向服务器端以使其更快,除非逻辑必须在您的Web应用程序中。

More info