iframe 相对路径挑战

cal*_*zar 6 html iframe

我有一个页面,在页面内我有一个 Iframe。目录如下:

Folder1
   Folder2
      IframeCSS
          IframeCSS.Css
      iframePage1.html
stuff.css
parentPage1.html
Run Code Online (Sandbox Code Playgroud)

在 iframePage 中,它IframeCSS.Css通过使用相对链接来引用/IframeCss/IframeCSS.Css

由于应用程序的性质,我无法通过硬代码更改 iframe 页面的链接(修改物理 iFrame Html 页面)

总的目标是让iframePage1.html看到IframeCSS.Css(和所有其他的HREF / SRC公司)通过相对链接(href="/IframeCSS/IframeCss.Css"

我尝试了几件事:

  1. 动态添加一个基本路径到 Iframe

    这失败了,因为只能在 iframe 加载后添加基础,从而使链接表现得好像基础不存在一样

  2. 创建容器 Iframe 以获取 HTML,添加 Base,然后将 Contents 复制到显示的 Iframe

    由于上述原因而失败,此方法也会导致加载 Google Map API 的问题

  3. 通过容器 iframe,使用 jquery,将父根附加到所有 src 和 hrefs 以更改 url

    这也失败了。

你们建议我在这一点上做什么?

(iframe 指向同一个域,并且用户需要能够浏览 iframe)

父 HTML:

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <link rel="stylesheet" href="cmsCSS/CmsStyle.css" />
    <title></title>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script src="CmsScript.js"></script>
<script src="Insights.js"></script>
</head>

<body id="Dash">
    
    <form id="form1" runat="server">
    <div id="topDash">
        <img id="something" src="img/logo.png" />

    </div>

    </form>
         <iframe id="dashBody"></iframe>
         <iframe id="iframeContainer"></iframe>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

cal*_*zar 1

引用同一域中的页面是根本不可能的,因为即使没有 iframe,该页面也无法使用相对文件路径:

Folder1
   Folder2
      IframeCSS
          IframeCSS.Css
      iframePage1.html
stuff.css
parentPage1.html
Run Code Online (Sandbox Code Playgroud)

如果您通过在页面中键入来访问该页面domain.com/Folder1/Folder2/IframePage1.html 将不起作用,因为 IframePage1.html 正在尝试使用以下方式访问 css:

href="/IframeCSS/IframeCss.Css"
Run Code Online (Sandbox Code Playgroud)

这意味着它正在寻找domain.com/IframeCSS/IframeCss.Css并基于我提供的文件结构,它根本不存在。

我试图做的是以某种方式简单地将整个 iframePage 的 Hrefs 和 src 更改为而不是查找domain.com/IframeCSS/IframeCss.Css,它会更正链接并搜索它domain.com/Folder1/Folder2/IframePage1.html

解决方案是将 的内容放在Folder2根目录中,并在新根目录中创建一个包含parentPage1.html. 这样,就不需要更改文件路径。