我有这个重定向代码
<script>
//get timezone offset
var tzd = new Date();
var tzo = -tzd.getTimezoneOffset() * 60;
//redirect
document.write("<script type='text/javascript' src='savejs.php?to=https://test.com/" + "&tzo=" + tzo "'><\/script>");
</script>
问题是当tzo变量未知(空/未定义)时,它将破坏重定向脚本。如何确保重定向继续甚至tzo变量是未知的。
重定向脚本在savejs.php中(因为我想确保在访问者允许继续之前先获取tzo变量)
非常感谢
答案 0 :(得分:0)
如果定义了tzo,我会添加一小部分tzo,如果没有,则将其转换为空字符串。
<script>
//get timezone offset
var tzd = new Date();
var tzo = -tzd.getTimezoneOffset() * 60;
// make tzo to an empty string if not defined or null
tzo = tzo || "";
//redirect
document.write("<script type='text/javascript' src='savejs.php?to=https://test.com/" + "&tzo=" + tzo "'><\/script>");
</script>
答案 1 :(得分:0)
您可以使用try,catch,finally
:
//get timezone offset
var tzd = new Date();
var tzo = 0
try {
tzo = -tzd.getTimezoneOffset() * 60;
} catch (err) {
tzo = 0; //when error occur
} finally {
//redirect
document.write("<script type='text/javascript' src='savejs.php?to=https://test.com/" + "&tzo=" + tzo "'><\/script>");
}
&#13;
答案 2 :(得分:0)
只需使用if条件验证tzo
。验证empty|null|undefined
//get timezone offset
var tzd = new Date();
var tzo = -tzd.getTimezoneOffset() * 60;
if(tzo){
//redirect
document.write("<script type='text/javascript' src='savejs.php?to=https://test.com/" + "&tzo=" + tzo "'><\/script>");
}
答案 3 :(得分:0)
从代码中提供的内容不清楚是什么打破了脚本。除了当前答案,您还可以尝试有条件地添加tzo
url参数:
//get timezone offset
var tzd = new Date();
var tzo = -tzd.getTimezoneOffset() * 60;
var tzoParam = tzo ? "&tzo=" + tzo : "";
//redirect
document.write("<script type='text/javascript' src='savejs.php?to=https://test.com/" + tzoParam + "'><\/script>");