简体   繁体   中英

get iframe content as string

I use a jquery plugin for generating rich text editor. That editor generates an structure like this:

<div id="editor" ... >
   ...
   <iframe>
      <!DOCTYPE html>
      <html>
         <head>...</head>
         <body>
            //some important content here and I need to get them
         </body>
      </html>
   </iframe>
</div>

Now, I want to get everything inside iframe's body as an String . I tested $("#editor").contents().find("body") , but this return me an object, not string. Also tried $("#editor").contents().find("body").outerHTML , but this return me undefined . How can I do this? Please help me. Thank you for your time.

Edit:

I use SCEditor plugin. As Ramesh said, I used val() method, but still return me (an empty string) in the firebug console. Here is my code:

var instance = $("textarea").sceditor({
        plugins: "bbcode",
        style: "../../editor/minified/jquery.sceditor.default.min.css",
        //some othe options
    });
    $("#save").click(function(){
        console.log(instance.val());
    });

As Ramesh suggests, I used $('textarea').sceditor('instance').val() and it worked.

jQuery objects are array like objects, and you can access the innerHTML property by index (take a look at the console output):

 console.log($('iframe')[0].innerHTML); 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div id="editor"> <iframe> <!DOCTYPE html> <html> <head></head> <body> some important content here and I need to get them </body> </html> </iframe> </div> 

Try :

var contain = document.getElementById('iframe').contentWindow.document.body.innerHTML ;
// Use contain where need .

Note : Work only if the iframe source is in the same domain.

In SCEditor to fetch the value of the rich text box, you have to use the .val method

val() Since: 1.3.5

Gets the current value of the editor.

This will return the filtered HTML from the WYSIWYG editor or the unfiltered contents of the source editor.

If using a plugin that filters the HTML like the BBCode plugin, this will return the filtered HTML or BBCode in the case of the BBCode plugin.

Syntax

var val = instance.val();

Return Type: String

The filtered value of the editor

I hope this helps:

// Gives you the DOM element without the outside wrapper you want
$('.classSelector').html()

// Gives you the inside wrapper as well
$('.classSelector')[0].innerHTML

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM