2

我有这个从另一个开发人员那里继承的 Javascript 代码。我对 Javascript 很陌生。

我遇到的问题是当用户使用 HTTPS 时它不起作用。有解决此问题的方法吗?

var tier1CategoryLink = "http://" + window.location.hostname + "/categories/";
    $("#as_Placeholder").load(tier1CategoryLink + " .SubCategoryList > ul", function(){
        $('#tier1').find('option').remove().end().append('<option>Make</option>');
        $("#as_Placeholder ul li").each(function(){
            var thisText = $(this).children("a").text();
            if ((thisText != "All Products") && (thisText != "Best Selllers") && (thisText != "Chromoly Flywheel Combo Sale") && (thisText != "New Arrivals") && (thisText != "On Sale") && (thisText != "Needs Categories")) {
                $("#tier1").append("<option value='" + $(this).children("a").attr("href") + "'>" + thisText + "</option>");
            }
        });
    });
4

3 回答 3

3

使用 window.location 确定用户当前的协议并进行相应调整:

var tier1CategoryLink = window.location.protocol + "//" + window.location.hostname + "/categories/";

或者只使用相对 URL:

var tier1CategoryLink = "/categories/";
于 2012-06-15T17:06:57.650 回答
0

我猜你想说你在浏览器中遇到了一个 java 脚本错误。这也是意料之中的。当用户在 https 中时,您必须修改 java 脚本以包含 https。例如,您的第一行必须如下所示:

var tier1CategoryLink = "https://" + window.location.hostname + "/categories/";

编辑:此外,你可以看看这个来解决你的问题。 检测 HTTP 或 HTTPS,然后在 JavaScript 中强制使用 HTTPS

于 2012-06-15T17:03:18.580 回答
0

最简单的解决方案是只使用双斜杠

var tier1CategoryLink = "//" + window.location.hostname + "/categories/";

规范第 5.2 节中的详细信息

于 2012-06-15T17:19:43.627 回答