2016-01-16 54 views
0

我有一個網頁 - 通過點擊一個按鈕 - 將動態創建包含可編輯文本字段(CKE編輯器)的iframe。我需要訪問編輯後的文本,當點擊另一個按鈕(該HTML()然後發送到SQLite數據庫等)。jquery訪問children()value(使用.html())

這是我的HTML(PHP文件中)的結構從IFRAME部分起(這是實際生成的HTML文本 - 從擴展Firebug複製Firefox的 - 壽簡化由我只是爲這一目的):

<iframe class="cke_wysiwyg_frame cke_reset"> 
    <!DOCTYPE html> 
    <html lang="sk" dir="ltr"> 
     <head>//SOME OTHER TAGS HERE...not important for this problem</head> 
     <body class="cke_editable cke_editable_themed cke_contents_ltr> 
     //SOME EDITABLE TEXT HERE...this is what I need to access! 
     </body> 
    </html> 
</iframe> 

我有這個jQuery代碼,我試圖通過PHP來訪問PHP動態創建的body html值(因爲我猜我嘗試了所有可能的方式,我發現我爲了測試目的而剝下它來提醒()看看它是否給我的價值):

echo 'alert(jQuery("iframe[class*=\'cke_wysiwyg_frame\']").children("html").children("body").html());'; 

當我使用這一切是在alert()窗口tho第一部分jQuery(「iframe [class * = \'cke_wysiwyg_frame \']」)工作正常 - 測試,它發現正確的iframe「空」...

所以當我絕望我也tryed其他幾種方法類似這樣一旦跌破根據其他stackowerflow話題,我發現:

echo 'alert(jQuery("iframe[class*=\'cke_wysiwyg_frame\']").children().eq(0).children().eq(1).html());'; 

// OK with this I already know that get() is giving DOM object and should be nested in other jQuery(), anyway... 
echo 'alert(jQuery("iframe[class*=\'cke_wysiwyg_frame\']").children().get(0).children().get(1).html());'; 

echo 'alert(jQuery("iframe[class*=\'cke_wysiwyg_frame\']").find("body").html());'; 

所有這一切都讓我「空」的「不確定」的警示()測試窗口。由於某種原因,我根本無法訪問children()對象,或者至少不知道如何訪問它/它們(根據alert()窗口,當我剛纔有(jQuery(「iframe [class * = \'cke_wysiwyg_frame \']「)。children()它給了我[對象對象],但就是這樣 - 我不知道要訪問它,所以我可以移動到下一個孩子())

我還搜索其中基本上所有的有點相關的答案都指向StackOwerflow壽沒有任何與該網頁實際上是爲我工作。

什麼我錯在這裏做什麼?我不知道......很遺憾。

編輯 @A. Wolff您的回答是正確的 - 請您將您的答案作爲獨立消息發佈,以便我可以將其標記爲正確答案?

+0

iframe的內容如何加載?你應該綁定iframe的onload事件(如果需要的話)並從那裏訪問它的內容,例如:'$(this).contents()。find(「body」)。html()' –

+0

不幸的是我不能像整個部分從iframe向前(甚至更多的標籤在他們面前)是由CKE編輯器自己製作的巨大的縮小腳本,我不想編輯/亂七八糟... – errerr

+0

正如A.沃爾夫提到的,要獲取「文檔」對象iframe使用jQuery,使用'contents()'方法。但是,如果你使用的是CKEditor,那麼你應該可以通過調用'CKEDITOR.instances.instanceName.getData();' – Rafael

回答

0
<html> 
<body> 

<p id="demo" onclick="myFunction()">Click me to change my HTML content (innerHTML).</p> 

<script> 
function myFunction() { 
    document.getElementById("demo").innerHTML = "Paragraph changed!"; 
} 
</script> 

</body> 
</html> 
+0

thanx,但我已經有一個,沃爾夫的一個,但他需要把它作爲單獨的信息發佈,而不是評論,因爲他這樣做,我可以將它設置爲正確的回答 – errerr