我有一個網頁 - 通過點擊一個按鈕 - 將動態創建包含可編輯文本字段(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您的回答是正確的 - 請您將您的答案作爲獨立消息發佈,以便我可以將其標記爲正確答案?
iframe的內容如何加載?你應該綁定iframe的onload事件(如果需要的話)並從那裏訪問它的內容,例如:'$(this).contents()。find(「body」)。html()' –
不幸的是我不能像整個部分從iframe向前(甚至更多的標籤在他們面前)是由CKE編輯器自己製作的巨大的縮小腳本,我不想編輯/亂七八糟... – errerr
正如A.沃爾夫提到的,要獲取「文檔」對象iframe使用jQuery,使用'contents()'方法。但是,如果你使用的是CKEditor,那麼你應該可以通過調用'CKEDITOR.instances.instanceName.getData();' – Rafael