Я экспериментирую с редактором Rich Text Editor YUI 3 и столкнулся с инцидентом, который я не понимаю:
когда я вставляю iframe из другого источника в редактируемую область, содержимое этого iframe можно редактировать как любой другой контент. Я могу поместить курсор в область iframe и, например, удалить символы.
Это происходит только в Chrome, в Firefox невозможно редактировать iframe. Как возможно, что DOM внутреннего iframe можно манипулировать, хотя он не имеет того же происхождения, что и страница текстового редактора YUI?
Вот пример кодирования:
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script src="http://yui.yahooapis.com/3.5.1/build/yui/yui-min.js"></script>
<script>
YUI().use('editor-base', function(Y) {
var editor = new Y.EditorBase({content: '<strong>This is <em>a test</em></strong><strong>This is <em>a test</em></strong> '});
//Add the BiDi plugin
editor.plug(Y.Plugin.EditorBidi);
//Focusing the Editor when the frame is ready..
editor.on('frame:ready', function() {this.focus();});
//Rendering the Editor.
editor.render('#editor');
});
</script>
<script>
function inject() {
var ifr = $('<iframe/>', {
style: 'display: block; width: 300px; heigth: 200px;',
src: 'http://demo.yarkon.de',
frameBorder: 0,
scrolling: 'no'
});
$('#editor').find('iframe').contents().find('body').append(ifr);
}
</script>
</head>
<body>
<button onclick='inject()'>Inject</button>
<div id="editor"></div>
</body>
</html>
Google Chrome 20: iframe доступен для редактирования
Firefox 13: iframe не редактируется