谁拥有子帧';在javascript中,是父项还是子项?

谁拥有子帧';在javascript中,是父项还是子项?,javascript,frame,rename,Javascript,Frame,Rename,使用网页子框架时,创建者(父级)通常会给每个子框架一个“名称”,然后可以使用mainWindow.dataFrame等语法引用这些框架。我遇到了一个特定于浏览器的问题,我跟踪到这样一个事实:从外部站点加载的子帧将其窗口重命名为与使用的父窗口不同的名称。这会导致Google Chrome出现问题,但不会导致Firefox出现问题 Firefox似乎将同一子帧的父级名称和子级名称分开。这使得父javascript可以继续按预期工作,而子javascript可以根据需要使用自己的名称 Chrome似乎

使用网页子框架时,创建者(父级)通常会给每个子框架一个“名称”,然后可以使用mainWindow.dataFrame等语法引用这些框架。我遇到了一个特定于浏览器的问题,我跟踪到这样一个事实:从外部站点加载的子帧将其窗口重命名为与使用的父窗口不同的名称。这会导致Google Chrome出现问题,但不会导致Firefox出现问题

Firefox似乎将同一子帧的父级名称和子级名称分开。这使得父javascript可以继续按预期工作,而子javascript可以根据需要使用自己的名称

Chrome似乎有一个不同的想法,一个子帧只有一个名称。子对象重命名框架后,父对象将无法再按名称访问该框架。即使在将不同的内容加载到子帧之后,“损坏”仍然存在

我还没有研究其他浏览器的功能

我知道这个描述涉及跨域安全问题。一旦非现场子帧加载进来,我们就无法访问子帧的内容。但是让孩子从家长的角度重新命名窗口似乎也是一个潜在的安全问题


为了解决这个问题,我不得不停止使用mainWindow.dataFrame语法,现在在将新数据加载到子帧时使用带有固定索引的frames[]数组——虽然很难看,但可行。我想我是在寻求确认,没有更好的办法来解决这个问题。如果能知道谁是“对的”,Firefox还是Google,那就太好了。我投票支持Firefox。

请忘记我对问题的最初分析。当我试图简化正在修复的复杂代码时,我意识到发生了更多的事情。问题似乎是Firefox中的意外行为。框架只有一个父级和子级名称。当任一上下文请求的.name属性时,都会得到相同的响应 框架


奇怪之处在于javascript维护的自动创建的变量/属性。如果使用name=“subName”属性创建了,则self.subName将为您提供对该帧的引用。如果父级或子级更改了帧的名称,如self.subName.name=newName,则会弹出一个新的自动变量/属性self.newName并引用原始帧。在Chrome下,旧的变量/属性将消失。在Firefox下,旧名称不会消失(!!!),顶级窗口的两个属性仍然存在,并且都引用相同的子帧。这一切都解释了为什么我的原始代码在Firefox上工作,但在Chrome上失败。

你能在上面发布一个例子来说明这个问题吗?我想你谈论的是两个不同的东西,iframe名称(属于父对象)和窗口标题。我会在有更多时间时尝试举一个例子。Christophe-这与框架的“title”属性。只有名称有问题。通常使用创建。可使用框架[1]从javascript访问.name。当父创建者和子内容对框架的名称有不同的想法时,会出现我的问题。是否应允许子框架的内容页更改父内容分配的“name”属性?