在引导选项卡上单击 iframe 内的更改内容

Posted

技术标签:

【中文标题】在引导选项卡上单击 iframe 内的更改内容【英文标题】:On bootstrap tab click change content inside iframe 【发布时间】:2017-05-04 00:06:29 【问题描述】:

我有一个 index.html 文件,其中有引导选项卡的标题和带有选项卡内容的 iframe。

<!DOCTYPE html>
<html>
<head>
    <title>test</title>
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="http://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.4/css/bootstrap.min.css" rel="stylesheet" media="screen">
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
</head>
<body>
    <script>
        function switchTabInIframe(tab) 
            var tabId = $('#iframe_1').contents().find('#1');
            $('.nav-tabs a[href="#' + tabId + '"]').tab('show');
        ;
    </script>

    <div id="exTab2" class="container">
        <ul class="nav nav-tabs">
            <li class="active">
                <a href="#1" data-toggle="tab" onclick="switchTabInIframe('1')" ;>1</a>
            </li>
            <li>
                <a href="#2" data-toggle="tab" onclick="switchTabInIframe('1')">2</a>
            </li>
            <li>
                <a href="#3" data-toggle="tab" onclick="switchTabInIframe('1')">3</a>
            </li>
        </ul>
        <iframe src="iframe.html"   frameborder="0" name="iframe_1"></iframe>
    </div>
</body>
</html>

在 iframe.html 下方,我有标签的内容(正文):

<!DOCTYPE html>
<html>
<head>
    <title>test</title>
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="http://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.4/css/bootstrap.min.css" rel="stylesheet" media="screen">
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
</head>
<body>
    <div class="tab-content">
        <div class="tab-pane active" id="1">
            <h3>tab1</h3>
        </div>
        <div class="tab-pane" id="2">
            <h3>tab2</h3>
        </div>
        <div class="tab-pane" id="3">
            <h3>tab3</h3>
        </div>
    </div>
</body>
</html>

单击索引文件中的选项卡时,如何更改 iframe 中的内容?上面的代码不起作用...控制台没有错误... Thx

【问题讨论】:

你能编辑/修改 ifram.html 吗? 【参考方案1】:

您需要创建并调用 iframe 页面中的函数。您的索引页面中的范围与 iframe 不同,用于切换选项卡。我建议这个更新..

在索引页面中,创建一个名为 switchframe(id) 的新函数并从您的 onclick 调用它

function switchframe(id) 
   document.getElementsByName('iframe_1').contentWindow.switchTabInIframe(id);

在 iframe.html 中

function switchTabInIframe(tab) 
       console.log('I can run');
       console.log(tab);
       //perform your tab switch now.
    ;

请告诉我们结果..

【讨论】:

谢谢,这正是我需要的!【参考方案2】:

这里有一个可能对您有所帮助的示例。当您单击标签时,它会运行一个函数,然后根据单击的选项卡更改 iframe 中的 attr src。这是使用 JQuery。

function switchTabInIframe(whichOne) 
    var iframesource = "";
    if (whichOne == 1) 
      iframesource = "http://google.com";
       else if (whichOne == 2) 
      iframesource = "http://matthewbergwall.com";
       else if (whichOne == 3) 
      iframesource = "http://***.com";
      
        $("#ciframe").attr("src", iframesource);
  
<!DOCTYPE html>
<html>
<head>
    <title>test</title>
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="http://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.4/css/bootstrap.min.css" rel="stylesheet" media="screen">
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
</head>
<body>
    <script>
        function switchTabInIframe(tab) 
            var tabId = $('#iframe_1').contents().find('#1');
            $('.nav-tabs a[href="#' + tabId + '"]').tab('show');
        ;
    </script>

    <div id="exTab2" class="container">
        <ul class="nav nav-tabs">
            <li class="active">
                <a href="#1" data-toggle="tab" onclick="switchTabInIframe(1)" ;>1</a>
            </li>
            <li>
                <a href="#2" data-toggle="tab" onclick="switchTabInIframe(2)">2</a>
            </li>
            <li>
                <a href="#3" data-toggle="tab" onclick="switchTabInIframe(3)">3</a>
            </li>
        </ul>
        <iframe src="iframe.html"   frameborder="0" name="iframe_1" id="ciframe"></iframe>
    </div>
</body>
</html>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

【讨论】:

这无济于事,我需要在 iframe 中操作 DOM,src 将始终相同。

以上是关于在引导选项卡上单击 iframe 内的更改内容的主要内容,如果未能解决你的问题,请参考以下文章

仅刷新包含 iframe 的引导程序中的当前导航选项卡

我正在尝试使用 ngFor 在引导选项卡上循环,

如何使用 jQuery Validate 正确验证放置在多个选项卡上的 Twitter 引导表单?

如何维护引导选项卡上的分页?

引导选项卡单击后不显示内容

在选项卡更改时动态更改 iframe 的高度?