使用网页子框架时,创建者(父级)通常给每个子框架一个“名称”,然后可以使用类似 mainWindow.dataFrame 的语法来引用这些框架。我遇到了一个特定于浏览器的问题,我已经追踪到这样一个事实,即从外部站点加载的子框架将其窗口重命名为与使用的父级不同的窗口。这会导致 Google Chrome 出现问题,但不会导致 Firefox 出现问题。
Firefox 似乎将同一子框架的父名和子名分开。这使父 javascript 可以继续按预期工作,而子 javascript 可以根据需要使用自己的名称。
Chrome 似乎有不同的想法,并且子框架只有一个名称。一旦子级重命名框架,父级就不能再按名称访问它。即使将不同的内容加载到子帧中,“损坏”仍然存在。
我还没有调查其他浏览器的作用。
我知道此描述涉及跨域安全问题。一旦异地子加载进来,我们就无法访问子框架的内容。但是让孩子从父母一方重命名窗口似乎也是一个潜在的安全问题。
为了解决这个问题,我不得不停止使用 mainWindow.dataFrame 语法,现在在将新数据加载到子帧时使用带有固定索引的 frames[] 数组 - 丑陋但可行。我想我正在寻找确认没有更好的解决方法。很高兴知道谁是“正确的”,Firefox 或 Google。我投票给火狐。