如果(true | | true | false)语句在javascript中为true?
我有这段代码来保护我的页面不被篡改如果(true | | true | false)语句在javascript中为true?,javascript,if-statement,boolean,conditional-statements,Javascript,If Statement,Boolean,Conditional Statements,我有这段代码来保护我的页面不被篡改 window.onload = function(){ try { if (window.parent && window.parent.location.hostname !== "app.herokuapp.com"){ throw new Error(); } catch (e){ //do something } } 它工作得非常好,直到我尝试添加更多值来比较主机名。我想添加我的自定
window.onload = function(){
try
{
if (window.parent && window.parent.location.hostname !== "app.herokuapp.com"){
throw new Error();
}
catch (e){
//do something
}
}
它工作得非常好,直到我尝试添加更多值来比较主机名。我想添加我的自定义域名。我试过这个:
window.onload = function(){
try
{
if (window.parent && (window.parent.location.hostname !=="app.herokuapp.com"
|| window.parent.location.hostname !== "www.app.com"
|| window.parent.location.hostname !== "localhost")){
throw new Error();
}
catch (e){
//do something
}
}
这总是返回true,因此抛出错误。我怎样才能做到这一点?除非主机名与这些字符串匹配,否则我想抛出一个错误,不管发生什么,它都会抛出一个错误。我是新手,希望能得到一些帮助!谢谢
另外,我添加了“localhost”,因为我希望在推送到heroku之前能够在本地测试它
|
如果任何操作数的计算结果为true
,则返回计算结果为true
。也许你想用&&
来代替:
if (window.parent
&& window.parent.location.hostname !== "app.herokuapp.com"
&& window.parent.location.hostname !== "www.app.com"
&& window.parent.location.hostname !== "localhost")
或通过:
如果所有操作数的计算结果均为true
,则该值将计算为true
进一步阅读
|
如果任何操作数的计算结果为真
,则返回计算结果为真
。也许你想用&&
来代替:
if (window.parent
&& window.parent.location.hostname !== "app.herokuapp.com"
&& window.parent.location.hostname !== "www.app.com"
&& window.parent.location.hostname !== "localhost")
或通过:
如果所有操作数的计算结果均为true
,则该值将计算为true
进一步阅读
- 既然已经有了一个相当完整的答案,我建议采用另一种方法。当你有这样长的语句时,我发现使用高阶函数更容易阅读。这样考虑您的情况:“检查主机名是否与任何给定字符串都不匹配”。这就是我想阅读代码的方式,其他一切都是样板:
function not(y) {
return function(x) {
return x !== y;
};
}
var hosts = ['app.herokuapp.com','www.app.com','localhost'];
var parent = window.parent;
if (parent && hosts.some(not(parent.location.hostName))) {
...
}
既然已经有了一个相当完整的答案,我会建议一个不同的方法。当你有这样长的语句时,我发现使用高阶函数更容易阅读。这样考虑您的情况:“检查主机名是否与任何给定字符串都不匹配”。这就是我想阅读代码的方式,其他一切都是样板:
function not(y) {
return function(x) {
return x !== y;
};
}
var hosts = ['app.herokuapp.com','www.app.com','localhost'];
var parent = window.parent;
if (parent && hosts.some(not(parent.location.hostName))) {
...
}
我开始这样想,但不知道如何实现它。非常感谢。它看起来确实更干净。我开始这样想,但不确定如何完成它。非常感谢。它看起来确实干净。