当函数调用尝试检测帧的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”。但它适用于使用完全相同浏览器的其他用户。
我的问题:
我在网络搜索中看到的唯一看起来相关的是一个名为“firebug”的程序,但是我的用户的客户端没有使用这个程序。
答案 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,我想在我的机器或虚拟机中重新创建问题。