2010-11-03 15 views
8

Prima di tutto lasciami dire che sono aperto a idee su un approccio diverso del tutto.mostra solo un div all'interno di un iframe (javascript, JQuery ...)

ho e iframe come tale:

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

La pagina viene caricata con l'iframe ha un div chiamato loginInnerBox. Voglio solo mostrare loginInnerBox e tutto ciò che contiene.

Qualche idea su come fare questo? Stavo pensando di usare Jquery o javascript di qualche tipo per rimuovere tutto il resto sulla pagina caricata dall'iframe, non sono sicuro di come farlo ...

Giusto per essere chiari voglio tutto sulla mia pagina al di fuori del iframe per rimanere intatto. Voglio l'equivalente di dire $. ('Testloadlogin'). Load ('../ security/login.aspx' #loginInnerBox) che otterrebbe l'html di loginInnerBox e lo inserirà nel div di downloadloadlogin. Tuttavia ho bisogno dell'elaborazione del back-end dall'altra pagina supportata da iframe, ma non dal carico di Jquery.

Il codice della pagina caricata dal 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> 

Avete bisogno di più informazioni di quello?

Ho provato questo, non ha avuto effetto:

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

Non capisco. Cosa intendi con "mostra solo la scatola"? Cosa vuoi che accada con gli altri contenuti? Che dire del contenuto al di fuori dell'iframe? –

+0

Siamo spiacenti. Il resto del contenuto DENTRO l'iframe che voglio sparire. Il contenuto FUORI dall'iframe che voglio rimanere intatto. – kralco626

+0

Dipenderà dal markup della pagina caricata all'interno dell'iframe, come farlo, quindi per favore mostra il markup. –

risposta

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

essere consapevoli questo dovrebbe funzionare solo su iframe caricati dallo stesso dominio (same origin policy)

EDIT: Probabilmente questo rimuove figli di loginInnerBox pure. In tal caso si potrebbe provare a clonare prima:

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

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

Qualcosa del genere ..

+0

speriamo che provengano dallo stesso dominio. Sono in questo momento, sperano solo che non cambino i domini del sito. Sto provando ora. – kralco626

+0

non ha fatto nulla. mostra solo l'intera pagina nell'iframe come prima. – kralco626

+0

Hmm .. Prova se puoi rimuovere qualsiasi cosa dai contenuti iframe. Se 'remove' non funzionerà su iframe potresti passare a' $ (el) .hide() '? – pex

0

Aggiungere questo al -elememt:

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

si nasconderà ogni bambino del corpo tranne # ctl00_CLPMainContent_Login1

Se # ctl00_CLPMainContent_Login1 contiene più della casella di accesso, è necessario utilizzare il suggerimento utilizzando clone() pubblicato da pex.

+0

quindi se ci sono le immersioni nella casella di login, dovrò usare il clone? verrà eseguito lo stesso codice lato serer quando clicco su un pulsante nell'iframe quando si usa il clone come quando non si usa il clone? – kralco626

+0

javascript non si preoccupa del codice serveride, e nell'altro modo il server non si preoccupa di javascript. –

5

Con jQuery, è possibile caricare non solo il contenuto di un URL, ma un selettore CSS specifico all'interno di tale URL. Questo sarebbe un approccio molto più pulito. È così.

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

Via CSS Tricks

Problemi correlati