在iframe中只显示一个div(javascript,JQuery ......)

kra*_*626 9 html javascript iframe jquery

首先,让我说我对完全采用不同方法的想法持开放态度.

我有和iframe这样:

<div id="testloadlogin">
      <iframe src="../security/login.aspx" width="400" height="500"
             scrolling="auto" frameborder="1">
      [Your user agent does not support frames or is currently configured
      not to display frames. However, you may visit
      <a href="../security/login.aspx">the related document.</a>]
      </iframe>
</div>
Run Code Online (Sandbox Code Playgroud)

使用iframe加载的页面有一个名为loginInnerBox的div.我只想显示loginInnerBox及其中的所有内容.

关于如何做到这一点的任何想法?我正在考虑使用Jquery或某种类型的javascript删除iframe加载的页面上的所有其他内容,但不确定如何访问它...

为了清楚起见,我希望iframe之外的所有内容都保持不变.我想要相当于说$.('testloadlogin').load('../ security/login.aspx'#loginInnerBox),它只是获取loginInnerBox的html并将其放在testloadlogin div中.但是,我需要iframe支持的其他页面的后端处理,但不需要Jquery加载.

iframe加载的页面的标记是

<body>
    <div>
    </div>.......
    <div class="AspNet-Login" id="ctl00_CLPMainContent_Login1">
        <div id="loginInnerBox">
            <div id="loginCreds">
                <table>
                </table>
            </div>
        </div>
    </div>
    <div>
    </div>....
</body>
Run Code Online (Sandbox Code Playgroud)

您需要更多信息吗?

我试过这个,它没有效果:

<div class="ui-corner-all" id="RefRes">
        <div id="testloadlogin">
        <iframe onload="javascript:loadlogin()" id="loginiframe" src="../security/login.aspx"
             scrolling="auto" frameborder="1">
      [Your user agent does not support frames or is currently configured
      not to display frames. However, you may visit
      <a href="../security/login.aspx">the related document.</a>]
      </iframe>
        </div>
    </div>
    <script type="text/javascript">
        function loadlogin() {
            $('<body>*', this.contentWindow.document).not('#ctl00_CLPMainContent_Login1').hide();
        }
    </script>
Run Code Online (Sandbox Code Playgroud)

Gou*_*eau 5

使用jQuery,您不仅可以加载URL的内容,还可以加载该URL中的特定CSS选择器.这将是一个更清洁的方法.就像这样.

$("#area").load("something.html #content");
Run Code Online (Sandbox Code Playgroud)

通过CSS技巧


pex*_*pex 3

$("iframe").contents().find("*:not(#loginInnerBox)").remove();
Run Code Online (Sandbox Code Playgroud)

请注意,这仅适用于从同一域加载的 iframe(同源策略

编辑loginInnerBox:这可能也会删除孩子。在这种情况下,您可以尝试先克隆它:

var iframe   = $("iframe").contents(),
    loginBox = iframe.find("#loginInnerBox").clone();

iframe.find("*").remove();
iframe.append(loginBox);
Run Code Online (Sandbox Code Playgroud)

类似的东西..