get iframe content as string

别说谁变了你拦得住时间么 提交于 2019-12-11 03:39:10

问题


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.


回答1:


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




回答2:


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>



回答3:


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.




回答4:


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


来源:https://stackoverflow.com/questions/30116410/get-iframe-content-as-string

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!