最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

show only one div within an iframe (javascript, JQuery...) - Stack Overflow

programmeradmin0浏览0评论

First just let me say I'm open to ideas on a different approach altogether.

I have and iframe as such:

<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>

The page being loaded with the iframe has a div called loginInnerBox. I only want to display the loginInnerBox and everything inside of it.

Any ideas on how to do this? I was thinking of using Jquery or javascript of some kind to remove everything else on the page loaded by the iframe, not sure how to access that though...

Just to be clear I want everything on my page outside of the iframe to remain intact. I want the equivalent of saying $.('testloadlogin').load('../security/login.aspx' #loginInnerBox) which would just get loginInnerBox's html and place it in the testloadlogin div. However I need the back-end processing from the other page which is supported by iframe, but not by the Jquery load.

The markup of the page loaded by the iframe is

<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>

Do you need more information than that?

I tried this, it had no effect:

<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>

First just let me say I'm open to ideas on a different approach altogether.

I have and iframe as such:

<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>

The page being loaded with the iframe has a div called loginInnerBox. I only want to display the loginInnerBox and everything inside of it.

Any ideas on how to do this? I was thinking of using Jquery or javascript of some kind to remove everything else on the page loaded by the iframe, not sure how to access that though...

Just to be clear I want everything on my page outside of the iframe to remain intact. I want the equivalent of saying $.('testloadlogin').load('../security/login.aspx' #loginInnerBox) which would just get loginInnerBox's html and place it in the testloadlogin div. However I need the back-end processing from the other page which is supported by iframe, but not by the Jquery load.

The markup of the page loaded by the iframe is

<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>

Do you need more information than that?

I tried this, it had no effect:

<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>
Share Improve this question edited Nov 4, 2010 at 11:42 kralco626 asked Nov 3, 2010 at 12:08 kralco626kralco626 8,62441 gold badges115 silver badges171 bronze badges 4
  • I don't understand. What do you mean by "only display the box"? What do you want to happen with the other content? What about content outside the iframe? – Pekka Commented Nov 3, 2010 at 12:10
  • Sorry. The rest of the content INSIDE the iframe I want to disappear. The content OUTSIDE the iframe I want to remain intact. – kralco626 Commented Nov 3, 2010 at 12:11
  • It will depend on the markup of the page loaded inside the iframe, how to do it, so please show the markup. – Dr.Molle Commented Nov 3, 2010 at 12:26
  • posted a general layout, i can post the while page if you would like... – kralco626 Commented Nov 3, 2010 at 12:54
Add a comment  | 

3 Answers 3

Reset to default 5

With jQuery, you can load not just the contents of a URL, but a specific CSS selector from within that URL. This would be a much cleaner approach. It's like this.

$("#area").load("something.html #content");

Via CSS Tricks

$("iframe").contents().find("*:not(#loginInnerBox)").remove();

Be aware this would only work on iframes loaded from the same domain (same origin policy)

EDIT: Probably this removes children of loginInnerBox as well. In that case you could try to clone it before:

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

iframe.find("*").remove();
iframe.append(loginBox);

Something like that..

Add this to the <iframe>-elememt:

onload="$('body>*',this.contentWindow.document).not('#ctl00_CLPMainContent_Login1').hide();"

it will hide every child of the body except #ctl00_CLPMainContent_Login1

If #ctl00_CLPMainContent_Login1 contains more than the loginbox, you have to use the suggestion using clone() posted by pex.

发布评论

评论列表(0)

  1. 暂无评论