5

我正在使用以下脚本强制将特定页面(首次加载时)放入(第三方)iFrame。

<script type="text/javascript">
    if(window.top==window) {
       location.reload()
    } else {
    }
</script>

(澄清一下:这个“嵌入”是由第三方系统自动完成的,但只有在页面刷新一次的情况下——出于样式和其他一些原因,我从一开始就想要它。)

现在,我想知道是否可以通过检测其“父”文档的当前 URL 以触发特定操作的方式来增强此脚本?假设第三方站点的 URL 是“ http://cgi.site.com/hp/ ...”,而 iFrame 的 URL 是“ http://co.siteeps.com/hp/ ... ” '。有没有可能实现某事。像这样使用 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>

TIA 乔希

4

2 回答 2

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

当然,第二个 if 是多余的,所以你可以简单地这样做:

<script type="text/javascript">
    if(/^http:\/\/cgi.site.com\/hp\//.test(window.location)) {
       location.reload()
    }
</script>

您在这里所做的是window.location使用正则表达式进行测试,以查看它是否与您想要的 URL 匹配。

如果要引用父母的 URL,可以使用parent.location.href.

根据您的评论,如果您想做其他事情,您可以执行以下操作:

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

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

于 2010-04-08T00:16:43.410 回答
2

您可以使用window.location.href获取 URL 来进行字符串比较。如果您在 iframe 中并且需要知道父 URLparent.location.href应该可以帮助您。

于 2010-04-08T00:20:14.000 回答