【问题标题】:Loading and changing iFrame 'src' from another page从另一个页面加载和更改 iFrame 'src'
【发布时间】:2012-11-05 13:24:41
【问题描述】:

我有一个带有 iFrame 的页面和四个指向本机文件的链接,每个链接在被召唤时都正确显示在 iFrame 中。我已经用直接的 HTML 做到了这一点。问题是当我最初登陆页面时,我有一个空的 iFrame,直到我点击任何链接。

在到达时将第一个链接填充到 iFrame 不仅会很好,而且如果有一种方法可以到达此页面并显示任何其他剩余链接(如果事实上),那将是一个真正的好处这就是有人来寻找的内容。例如,如果我将我的四个链接的锚点放在另一个页面上,那么如果有人可以选择第二个项目并在到达 my-iFrame-page.php 时发现它填充 iFrame,那将是理想的。

我不反对使用 jQuery 或任何类型的 javascripting,但恐怕对于脚本新手来说,了解语法很重要。如果有人可以发布一个实现我所追求的工作示例,我会欣喜若狂。

【问题讨论】:

  • 您可以使用哪些服务器端技术? php? 。网?任何事物?如果不是,那么 JS 很可能是你的答案。

标签: javascript jquery css iframe src


【解决方案1】:

您可以为将设置默认页面的 iframe 设置 src="" 属性。

例如,如果我将我的四个链接的锚点放在另一个页面上,那么如果有人可以选择第二个项目并在到达 my-iFrame-page.php 时发现它填充 iFrame,那将是理想的。

不用说,如果你有一个前面的页面链接到包含 iframe 的页面,你可以将请求中作为参数选择的 url 传递给 iframe 页面,然后用 PHP 将其解析为属性。


为简单起见,让我们假设您有两个页面:sourcepage.php 和 framepage.php。 sourcepage.php 包含一个带有四个单选按钮和一个提交到 framepage.php 的提交按钮的表单。单选按钮都是同一组的一部分,并且有四个值——根据您的评论“苹果”、“香蕉”、“樱桃”和“桃子”。 Apples 收音机的值为 1,Bananas 为 2,依此类推。每个收音机都有名称“page”。

这意味着当您提交表单时,在 sourcepage.php 上您需要以下代码

<?php
    $pageIndex = $_GET["page"];
    $pageUrl = "";

    switch ($pageIndex)
    {
        case "1":
            $pageUrl = "apples.html";
            break;
        case "2":
            $pageUrl = "bananas.html";
            break;
        // And so on...
    }
?>

<!-- And then later... -->

<iframe src="<?php echo $pageUrl; ?>"></iframe>

【讨论】:

  • 请问我该怎么做?例如,如果 iFrame 页面被称为 iFramePage.php,其中我设置了 iframe src="link1",那么如何创建一个访问 iFramePage.php 的 URL,其中 link2 出现在 iFrame 中(并且无需选择它从我列出的锚中)?衷心感谢。
  • 您需要将 URL 作为 GET 或 POST 参数传递,或者至少作为 URL 的指示符。例如,有一个指向 iFramePage.php?frame=2 的链接,然后在 iFramePage.php 中使用 switch case 语句处理 $_GET 参数 ['frame'],其中值“2”映射到“link2”,即插入到框架的 src 元素中。
  • 哦,伙计,听起来不错。我只是不知道怎么写:“...在 iFramePage.php 中,使用 switch case 语句处理 $_GET 参数 ['frame'],其中值“2”映射到插入的“link2”进入框架的 src 元素。”到目前为止,我已经在没有任何 javascript 的情况下虚张声势。
  • 你可以用 PHP 来写。您需要向接收页面指明您希望显示哪个链接,然后在框架的 src="" 部分执行
  • 如果我理解正确,链接,如果放在 anotherpage.php 上,应该是:Apples 香蕉 桃子 樱桃 然后在 iFramepage.php 上,我有: 我实际上并没有尝试过,因为我很确定我有什么问题。
【解决方案2】:

使用 JS 获取 URL 参数,当然也可以在页脚的链接中添加参数。假设你的 iframe 有 id="iframe",这就行了:)

<!DOCTYPE html>
<html>
<head>
<script type="text/javascript" src="http://code.jquery.com/jquery-1.8.2.min.js"></script>
<script>
    $(document).ready(function() {

        function get_url_param(name) {
            name = name.replace(/[\[]/, "\\\[").replace(/[\]]/, "\\\]");
            var regexS = "[\\?&]" + name + "=([^&#]*)";
            var regex = new RegExp(regexS);
            var results = regex.exec(window.location.href);
            if (results == null) {
                return "";
            } else {
                return results[1];
            }
        }

        if (get_url_param('show') == '') {
            $('#iframe').attr('src', 'wall-structures.php'); // Setting your default page....
        } else {
            $('#iframe').attr('src', get_url_param('show') + '.php');
        }

    });
</script>
</head>
<body>

    <a href="portfolio.php?show=wall-structures">Wall & Structures</a><br />
    <a href="portfolio.php?show=ovens-barbecues">Ovens & Barbecures</a><br />
    <a href="portfolio.php?show=pillars-arches">Pillars & Arches</a><br />
    <a href="portfolio.php?show=stairs-retaining-walls">Stairs & Retaining Walls</a><br />

    <iframe id="iframe"></iframe>

</body>
</html>

如果你不想用JS,也可以用纯PHP来做:

<?php

    if (isset($_GET['show'])) {
        $iframe_src = $_GET['show'] . '.php';
    } else {
        $iframe_src = 'somedefaultpage.php';
    }

?>


<a href="portfolio.php?show=wall-structures">Wall & Structures</a><br />
<a href="portfolio.php?show=ovens-barbecues">Ovens & Barbecures</a><br />
<a href="portfolio.php?show=pillars-arches">Pillars & Arches</a><br />
<a href="portfolio.php?show=stairs-retaining-walls">Stairs & Retaining Walls</a><br />

<iframe src="<?php echo $iframe_src; ?>"></iframe>

【讨论】:

  • 感谢您的耐心等待。上面的 javascript 似乎只提供了访问者可能选择的四个页面之一。我如何使它适用于这四个中的任何一个?
  • 我已经将脚本编辑为现在这样工作。现在,javascript 用于侦听任何具有 class="iframe-link" 的元素上的点击事件。因此,任何希望在 iframe 中打开的链接,都可以指定类“iframe-link”。如果您不想为此使用 jQuery,您也可以只写 我的链接 (目标取决于 iframe 的 id 属性!) .
  • 我仍然不太清楚你所说的“例如,如果我将我的四个链接的锚点放在另一个页面上,如果有人可以选择第二个项目并发现它填充,那将是理想的到达 my-iFrame-page.php 时的 iFrame。"??
  • 我编写了四个链接,这些链接引用每个被 iFrame 调用的本机页面,如下所示: 我想将链接放在网站的其他地方,并在任何特定的地方打开 iFrame 页面,不一定在 apples.php,这是当前发生的情况。
  • 仍然不确定 iframe 的用途。如果您希望相对于特定站点动态更改 iframe src,您需要在 URL 中传递一个变量,然后使用 $_GET 来确定 iframe 的 src ...您在某处有您网站的示例吗?
猜你喜欢
  • 2017-08-28
  • 1970-01-01
  • 2015-07-18
  • 1970-01-01
  • 2012-04-15
  • 1970-01-01
  • 2018-12-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多