检测帧中的location.href

时间:2011-11-14 20:20:34

标签: javascript frames

当函数调用尝试检测帧的location.href时,我在某些访问我网站的计算机上遇到问题,而更改值没有问题。有问题的框架可能指向不同的网站,可以通过以下调用点击另一个框架中的选项来操作:

parent.frames[0].location.href="http://www.foo.com/bar.html";

在所有情况下均可正常工作,并将框架更改为适当的位置。然而,对于某些用户而言,后续尝试验证它是否在特定位置是失败的。我尝试通过以下方式验证当前帧位置:

if(parent.frames[0].location.href == "http://www.foo.com/bar.html")
{
    return true;
}

对于我的一些用户来说,这会导致错误导致帧崩溃,并在firefox浏览器(在web开发人员/错误控制台下)显示为“无法检测到location.href”。但它适用于使用完全相同浏览器的其他用户。

我的问题:

  1. 是否存在导致此错误的设置,客户端可以设置为允许检查location.href值?
  2. 是否有更强大的方法来检查尽管设置有效的位置?
  3. 我在网络搜索中看到的唯一看起来相关的是一个名为“firebug”的程序,但是我的用户的客户端没有使用这个程序。

2 个答案:

答案 0 :(得分:1)

我遇到了跟​​随代码的类似问题,以突破一个框架:

function breakout_of_frame()
{

    if (parent.frames.length > 0) {
        parent.location.href = self.document.location
    }
}

我没有找到问题的根源,但我找到了一个解决方法,使事情有效:我添加了一点延迟。

    function sleep(milliseconds) {
      var start = new Date().getTime();
      for (var i = 0; i < 1e7; i++) {
        if ((new Date().getTime() - start) > milliseconds){
          break;
        }
      }
    }


function breakout_of_frame()
{
    sleep(500);
    if (parent.frames.length > 0) {
        parent.location.href = self.document.location
    }
}

我希望这可以帮到你!

答案 1 :(得分:0)

Firebug对调试很有帮助。每当我做AJAX或JavaScript时,我总是保持firebug开放。 RE:检测帧中的页面位置,我个人会使用后端语言来读取HTML标题以检查帧中的页面详细信息。在PHP中,您可以使用$ _SERVER ['PHP_SELF']等。要调试JavaScript,我想在我的机器或虚拟机中重新创建问题。