【问题标题】:Open link on iFrame - PHP or JQuery在 iFrame 上打开链接 - PHP 或 JQuery
【发布时间】:2013-07-13 21:19:50
【问题描述】:

已经尝试了一天多,所以我现在要采取最后的手段,在这里发帖。我有一个带有以下代码的网站

style.css

#nav li a.active {
    background: url('images/top-pages-button.png') 0 -80px;
}

#nav li ul li a:hover, #nav li ul li a.active {
    color: #6dff6d;
    font-weight: bold;
    text-decoration: none;
    background: url('images/pages-button.png') 0 -40px;
}

index.php 页面

<ul id="nav">
<li><a href="#" title="Top Pages" class="active">Top Pages</a>
<ul>
    <li><a href="test.php" target="myframe" title="Page 1" class="active">Page 1</a></li>
    <li><a href="test2.php" target="myframe" title="Page 2">Page 2</a></li>
</ul>
</li>
</ul>

<iframe name="myframe" style="width: 100%; height: 100%; border: none; overflow: hidden;" src="default-page.php"></iframe>

test.php 页面

Simple PHP file calling a page with some content/info/text.

上面的代码有效,加载网站时会打开一个默认页面,当您单击链接时,它会正确打开 iFrame 上的页面。但是,我有以下需求。

  • 我想复制并粘贴一个链接与我的朋友分享到 在 iframe 上打开的 DIRECT 页面。所以例如我想 通过电子邮件发送链接至 http://www.mydomain.com/index.php?page=page1.php 或类似的东西 那,而不是告诉他们访问 mydomain.com 然后点击 Top Pages 下的第 1 页。

  • 此外,除了“首页”之外,该网站还有多个类别,所以我 希望页面突出显示用户所在的位置、类别和 链接打开。因此,如果我按第 1 页,对于类别和那个 链接为“活动”,然后当我转到第 2 页的第 1 页链接时 返回默认值,第 2 页处于活动状态,依此类推 - 基于我的 样式表。

整个网站分为三个部分。左侧导航,中间内容,右侧聊天。我需要聊天是静态的,这就是我尝试这样做的原因。我确实希望能够向一个或多个朋友发送一个链接,该链接直接打开该页面而不是网站,并指示在类别和链接标记为“活动”时单击 X,并根据需要进行更改并保持聊天div 一直是静态的。

请让我知道这是否可以使用 PHP 的 JQUERY。非常感谢!

【问题讨论】:

  • 是同一个域的 iframe 还是不同的域?由于相同的来源策略,我认为如果 iframe 内容位于不同的域中,您将无法控制它。如果是同一个域,你可以通过js访问它。
  • 是的,它们都将位于同一个域中。尝试在位于同一域内的 iframe 上加载某些链接。

标签: php jquery iframe static


【解决方案1】:

index.php 中,只需为$_GET['page'] 添加一些检查 - 如果您想使用它:

<li><a href="page1.php" target="myframe" title="Page 1" class="<?= ($_GET['page'] == 'page1.php') ? 'active' : ''; ?>">Page 1</a></li>
<li><a href="page2.php" target="myframe" title="Page 2" class="<?= ($_GET['page'] == 'page2.php') ? 'active' : ''; ?>">Page 2</a></li>

同样,对于iframe

<iframe name="myframe" style="width: 100%; height: 100%; border: none; overflow: hidden;" src="<?= $_GET['page']; ?>"></iframe>

记得将允许的页面列入白名单(否则iframe 将加载任何内容):

if (isset($_GET['page'])) {
    if (in_array($_GET['page'], array('page1.php', 'page2.php')) === false) { // not whitelisted
        $_GET['page'] = 'default-page.php'; // revert to default
    }
}

else {
        $_GET['page'] = 'default-page.php'; // it isn't set
}

以上内容应该出现在页面顶部(或在$_GET['page']第一次出现之前)。

【讨论】:

    猜你喜欢
    • 2010-12-14
    • 1970-01-01
    • 2012-08-15
    • 2022-09-23
    • 2018-01-30
    • 1970-01-01
    • 1970-01-01
    • 2018-05-05
    • 2010-10-18
    相关资源
    最近更新 更多