Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/425.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
基于JavaScript的URL检测_Javascript_Url_Detection - Fatal编程技术网

基于JavaScript的URL检测

基于JavaScript的URL检测,javascript,url,detection,Javascript,Url,Detection,我使用下面的脚本强制将特定页面(第一次加载时)加载到(第三方)iFrame中 if(window.top==窗口){ location.reload() }否则{ } (澄清一下:这种“嵌入”是由第三方系统自动完成的,但只有在页面刷新一次的情况下才进行——出于样式和其他一些原因,我希望从一开始就将其存在。) 现在,我想知道这个脚本是否可以通过检测其“父”文档的当前URL来触发特定操作的方式进行增强?假设第三方站点的URL为“…”,而iFrame的URL为“…”。有没有可能用JS实现这样的事情

我使用下面的脚本强制将特定页面(第一次加载时)加载到(第三方)iFrame中


if(window.top==窗口){
location.reload()
}否则{
}
(澄清一下:这种“嵌入”是由第三方系统自动完成的,但只有在页面刷新一次的情况下才进行——出于样式和其他一些原因,我希望从一开始就将其存在。)

现在,我想知道这个脚本是否可以通过检测其“父”文档的当前URL来触发特定操作的方式进行增强?假设第三方站点的URL为“…”,而iFrame的URL为“…”。有没有可能用JS实现这样的事情:

<script type="text/javascript">
    if(URL is 'http://cgi.site.com/hp/...') {
       location.reload()
    }
    if(URL is 'http://co.siteeps.com/hp/...') {
       location.do-not.reload() resp. location.do-nothing()
    }
</script>

如果(URL是'http://cgi.site.com/hp/...') {
location.reload()
}
如果(URL是'http://co.siteeps.com/hp/...') {
location.do.not.reload()与location.do-nothing()相对应
}
蒂亚·乔什

<script type="text/javascript">
    if(/^http:\/\/cgi.site.com\/hp\//.test(window.location)) {
       location.reload()
    }
    if(/^http:\/\/co.siteeps.com\/hp\//.test(window.location)) {
       location.do-not.reload() resp. location.do-nothing()
    }
</script>

如果在另一种情况下你什么也不做,那实际上是一个NOP(无操作),因此你甚至不需要那里的else(或另一个If),因为它将是一个空块。

你可以使用
window.location.href
获取URL来进行字符串比较。如果你在一个iframe中,需要知道父母的URL
parent.location.href
应该会让你知道。

嗨,vivin!谢谢你的即时回复!我应该定义什么来代替“location.do.reload()resp”。location.do-nothing()'?是if…if。。。js可能吗?或者我需要一个“else”吗?假设我正确理解了您的逻辑流,您只希望在URL匹配时执行重新加载
http://cgi.site.com/hp
。如果是这样的话,你就不需要别的了,因为你真的什么都没做。当然,如果您想做其他事情,那么您可以使用
else if(…){…}
nice!如果实际的URL为例如“”,这也会起作用吗?当然。目前,正则表达式只匹配
cgi.site.com
目录下的任何URL。如果希望它与站点中的任何内容匹配,则必须将正则表达式更改为
/^http:\/\/cgi.site.com/
。如果您想让它更健壮一些(例如匹配https),可以使用
/^https?:\/\/cgi.site.com/
<script type="text/javascript">
    if(/^http:\/\/cgi.site.com\/hp\//.test(window.location)) {
       location.reload()
    }
    if(/^http:\/\/co.siteeps.com\/hp\//.test(window.location)) {
       location.do-not.reload() resp. location.do-nothing()
    }
</script>
<script type="text/javascript">
    if(/^http:\/\/cgi.site.com\/hp\//.test(window.location)) {
       location.reload()
    }
</script>
<script type="text/javascript">
    if(/^http:\/\/cgi.site.com\/hp\//.test(window.location)) {
       location.reload()
    }
    else if(/^http:\/\/co.siteeps.com\/hp\//.test(window.location)) {
       //do something else
    }
</script>