【发布时间】:2011-01-17 20:21:12
【问题描述】:
我遇到了与 iframe 相关的问题。
我有一个带有 iframe(子)的文档(父)。如果父文档在子文档中调用一个函数,该函数使用 window.location 将孩子的 url 更改为相对 url,则该 url 将相对于父文档。让我举例说明。
父文档:/test/parent.html
子文档:/projects/child.html
子代码:
function moveOn(){
window.location.href = "newPage.html";
}
父代码:
childDocument.contentWindow.moveOn();
结果: 子文档尝试访问 /test/newPage.html 而不是 /projects/newPage.html
有没有办法从父母那里解决这个问题?我处于无法在子文档代码中进行更改的情况,只能在父文档中进行更改。
谢谢, 尼克
编辑:
这是实际代码
在父级(/testr/testr.html)中:
testr.appHolder = $("childIframe");
testr.appHolder.src = "../projects/test.html";
testr.functionName = "moveOn";
testr.appHolder.contentWindow[testr.functionName]();
在子 (/projects/test.html) 中:
function moveOn(){
window.location.href = "newPage.html";
}
这是实际代码
在父级(/testr/testr.html)中:
testr.appHolder = $("childIframe");
testr.appHolder.src = "../projects/test.html";
testr.functionName = "moveOn";
testr.appHolder.contentWindow[testr.functionName]();
在子 (/projects/test.html) 中:
function moveOn(){
window.location.href = "newPage.html";
}
【问题讨论】:
-
嗯?您是否 10000% 确定这会以您描述的方式发生?那将是最奇怪的。如果您从子窗口中调用
moveOn,它肯定会重定向到不同的 URL? -
.. 顺便欢迎来到 SO。
-
谢谢!。请使用格式正确的代码查看下面的评论。
-
我遇到了完全相同的问题,除了相反(我希望孩子控制父母相对于父母的网址)。不过情况完全一样。
-
发生这种“明显令人惊讶”的行为是因为代码在父级的上下文中运行,这意味着任何相对 url 都相对于父级进行解释。在某些方面,实际上是有道理的。如果它以另一种方式起作用,人们也会将其描述为令人困惑。 :)
标签: javascript iframe path location