当javascript变量为空时继续脚本

时间:2017-05-15 11:12:57

标签: javascript

我有这个重定向代码

<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变量)

非常感谢

4 个答案:

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

&#13;
&#13;
//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;
&#13;
&#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>");