2013-02-19 4 views
0

Я использую плагин wysihtml5, чтобы добавить богатый редактор в мое текстовое поле.Почему я не могу выбрать что-то вроде iframe> html> body через jQuery?

Таким образом, плагин превращает это:

<textarea></textarea> 

в этом:

<textarea style="display:none;"></textarea> 
<iframe> 
    <header> 
    <header> 
    <body class="wysihtml5-editor"> 
    </body> 
</iframe> 

Я нашел некоторую информацию here, чтобы добавить счетчик символов:

wysihtml5Textarea.data("wysihtml5").editor.observe("load", function() { 
    wysihtml5Textarea.data("wysihtml5").editor.composer.element.addEventListener("keyup", function() { 
     var wysihtml5_cur_length = 0; 
     wysihtml5_cur_length = $('.wysihtml5-editor').val().length; 
     alert(wysihtml5_cur_length); 
    }); 
    }); 

Согласно автор плагина:

Solution is to not listen on the textarea for keyup events but instead on the 's body

Так вот что я сделал, я слушал IFRAME> HTML> тела: .wysihtml5-editor

Но сейчас, я получаю следующее сообщение об ошибке:

Uncaught TypeError: Cannot read property 'length' of undefined

Так это означает, что Часть jQuery не находит тело по какой-либо причине (он находит элементы, которые не находятся внутри iframe).

В чем может быть проблема и какие возможные решения?

enter image description here

+0

Потому что это 'iframe'. :-) –

+0

@John Итак, есть ли способ сделать эту работу? – alexchenco

+0

Я не верю. Это безопасность браузера. Я думаю, это похоже на обнаружение щелчка мышью на кнопке из 'iframe'. Но мне тоже интересно узнать о правильном ответе. Собираюсь сделать это любимым вопросом. –

ответ

1

Вы можете получить на содержание IFrame через contentWindow

Что-то вроде это работает для меня:

var editor_body = $(".wysihtml5-sandbox").contentWindow.document.body; 
$(editor_body).keyup(function() { 
    console.log($(this).text()); 
}); 
+0

Вы никогда не должны использовать ничего из w3schools.com. Посетите сайт http://w3fools.com/, и вы поймете, почему. – Dom