IE designMode Отображение дисплея: нет Divs - PullRequest
2 голосов
/ 01 января 2009

Я провел много исследований по этому вопросу, но я не могу решить эту проблему. У меня есть Div с несколькими Div внутри, которые я хочу скрыть перед включением экземпляра TinyMCE.

Я делаю это через jQuery -

$(".drop").hide()

Это прекрасно работает, и каждый движок браузера, кроме Trident (IE), скрывает их. Если я проверяю элементы в IE, css показывает «display: none».

Я нашел несколько статей и заметок о том, как эта функция IE отображает эти элементы, в том числе и в MSDN: http://msdn.microsoft.com/en-us/library/aa770023(VS.85).aspx

Проблема в том, что мне нужно, чтобы те прятались. Есть идеи?

Ответы [ 3 ]

4 голосов
/ 18 августа 2009

Это потому, что внутри редактируемого элемента IE делает все, включая элементы, скрытые с помощью display: none, редактируемые. С этим ничего не поделаешь, кроме удаления элементов, которые вы хотите скрыть из DOM страницы.

Здесь есть ссылка на это поведение IE здесь: http://msdn.microsoft.com/en-us/library/aa770023%28VS.85%29.aspx

0 голосов
/ 10 января 2009

Насколько я помню, tinyMCE использует для редактирования iframe и включает режим редактирования внутри iframe, поэтому, если вы находитесь в режиме редактирования перед загрузкой tinyMCE, вы уверены, что должны перевести внешний документ в режим редактирования.

Чтобы уточнить, пытаетесь ли вы повлиять на внутреннюю часть iframe или крошечный MCE загружает содержимое, содержащее дисплей: нет

По номинальной стоимости, если вы загружаете контент с дисплеем: ни одного в tinyMCE, вам, возможно, придется сделать какой-то грязный обходной путь, когда вы удаляете загруженные узлы и пытаетесь повторно вставить их в ту же позицию при сохранении.

Единственное преимущество, которое я вижу, это то, что в других браузерах вы неосознанно удаляете скрытые узлы, просто выбирая текст с обеих сторон узла.

0 голосов
/ 01 января 2009

Вы можете попробовать применить стиль, который устанавливает отображение на что-то, отличное от none, например:

.drop
{
    display: block; // or inline
}

Похоже, это вызвано необходимостью IE для элемента иметь «макет» для выполнения определенных операций над ним, скрывая, что он является одним из них. Элементы с заданным типом отображения блока должны иметь макет, то есть он занимает пространство и вынуждает браузер реорганизовать соседние элементы вокруг него.

...