2015-05-08 155 views
2

我使用jquery插件來生成富文本編輯器。該編輯器生成的結構是這樣的:獲取iframe內容作爲字符串

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

現在,我想iframe的身體內的一切作爲字符串。我測試了$("#editor").contents().find("body"),但是這返回給我一個對象,而不是字符串。也試過$("#editor").contents().find("body").outerHTML,但是這個返回我undefined。我怎樣才能做到這一點?請幫幫我。感謝您的時間。

編輯:

我用SCEditor插件。正如Ramesh所說,我使用了val()方法,但仍然在螢火蟲控制檯中返回(an empty string)。這裏是我的代碼:

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

由於拉梅什指出,我用$('textarea').sceditor('instance').val()和它的工作。

+1

什麼是你正在使用的插件的過濾值。最有可能的是,它會暴露一種方法來獲取Rich文本框的內容。我會建議不要直接閱讀iframe內容。 – Ramesh

+0

我使用[SCeditor](http://www.sceditor。COM /)。我檢查了API,但沒有發現有用的東西。 – hamed

+0

您可能需要更新您的問題,以清楚地捕捉到您需要SCeditor富文本框的內容,而不是iframe的內容。由於標題具有誤導性,迄今爲止您所得到的答案是提取iframe的內容。 – Ramesh

回答

1

在SCEditor獲取豐富的文本框的值,你必須使用.val方法

VAL()因爲:1.3.5

獲取編輯器的當前值。

這將從所見即所得編輯器或 未經過濾的源代碼編輯器內容返回已過濾的HTML。

如果使用像BBCode插件那樣過濾HTML的插件,這個 將在BBCode 插件的情況下返回過濾後的HTML或BBCode。

語法

var val = instance.val();

返回類型:String

編輯

+0

謝謝你的回答。但是,代碼中的「實例」是什麼? – hamed

+0

@hamed try'$('textarea')。sceditor('instance')。val()' – Ramesh

+0

謝謝。有用 :) – hamed

1

jQuery的對象是陣列狀物體,並可以訪問由指數innerHTML屬性(看看控制檯輸出):

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>

+0

謝謝你的回答。我測試過,但在控制檯中顯示「空串」。 – hamed

+0

我承認我不確定爲什麼,我只查了一下Firefox,Chrome和Spartan,他們都顯示。 – jdphenix

1

嘗試:

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

注意:僅在iframe源位於相同域中時使用。

+0

謝謝你的回答。但是iframe沒有ID,所以我不能使用'getElementById'。 – hamed

0

我希望這有助於:

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

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