如何使chrome / firefox能够运行parent.frame

时间:2017-04-07 08:46:20

标签: javascript jquery html google-chrome firefox

我正在开发一个不支持chrome / firefox的旧网站。 一个问题是代码可以在IE上运行,但不能运行chrome / firefox。

 put 'parent.frames("snscont").location.href="../../../../../fts/main/account/INITIAL.html"';

在Chrome上,它表示未捕获类型错误:parent.frame不是函数。 任何jquery或现代代码都可以使这个支持chrome / firefox? 非常感谢。

2 个答案:

答案 0 :(得分:1)

您可以使用以下代码将parent.frames回退到旧的IE行为:

function isFunction(obj) {
  return !!(obj && obj.constructor && obj.call && obj.apply);
}

if (parent.frames && !isFunction(parent.frames)) {
  var originParentFrames = parent.frames;
  parent.frames = function(name) {
    return originParentFrames[name];
  };
}

您的评论中的问题:

为什么要使用父级?

如果没有代码的上下文,很难回答这个问题。基本上,parent引用当前窗口或子帧的父级,如果在没有父级的窗口上调用它,则它引用自身。您可以查看https://developer.mozilla.org/en-US/docs/Web/API/Window/parent了解更多详情(感谢@ jeetendra'答案)。

我猜您的代码是在iframe中运行的?如果确实如此,那么parent.frames(B)中的A是从iframe A引用iframe B的好方法。

父母是对象吗?

是的,parent是附加在window上的对象。您可以运行typeof parent来获得结果object

什么是snscont?它是函数框架()的参数吗?

snscont是您的iframe的名称。 parent.frames()使用name来引用iframe对象。所以,是的,它作为参数传递。

后半部分从href开始意味着什么?它是否重定向到最后列出的页面?

是的,...location.href="..."语句使iframe显示另一个网址。但我不认为redirect在这里是准确的词。

答案 1 :(得分:0)

您可以参考https://developer.mozilla.org/en-US/docs/Web/API/Window/parent了解您的解决方案。 StackOverflow上几乎没有相同的重复问题。