我有从其他开发人员继承的这个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>");
}
});
});
答案 0 :(得分:3)
使用window.location确定用户的当前协议并进行相应调整:
var tier1CategoryLink = window.location.protocol + "//" + window.location.hostname + "/categories/";
或者只使用相对网址:
var tier1CategoryLink = "/categories/";
答案 1 :(得分:0)
我想你想说你在浏览器中遇到了java脚本错误。这也是预期的。当用户使用https时,您必须修改java脚本以包含https。例如,您的第一行必须如下所示:
var tier1CategoryLink = "https://" + window.location.hostname + "/categories/";
编辑:此外,您可以查看此问题以解决您的问题。 Detect HTTP or HTTPS then force HTTPS in JavaScript
答案 2 :(得分:0)
最简单的解决方案是使用双斜杠
var tier1CategoryLink = "//" + window.location.hostname + "/categories/";
中的详细信息