Nano Hash - криптовалюты, майнинг, программирование

Редактор расширенного текста YUI и та же политика происхождения в Chrome

Я экспериментирую с редактором 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 не редактируется


Ответы:


1

YUI Rich Text Editor создает iframe для редактируемой области и устанавливает для designMode документа значение on. Это означает, что этот iframe и все его потомки находятся в редактируемом режиме. Если вы добавите еще один iframe в редактируемую область, он унаследует это свойство и также будет редактируемым, независимо от его происхождения.

Поэтому предположение о том, что текстовый редактор YUI каким-то образом манипулирует DOM внедренного iframe, неверно: JavaScript не задействован, это просто взаимодействие с пользователем, как и в любом другом редактируемом поле (например, текстовая область или элементы с атрибутом contenteditable).

19.07.2012
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..