Запретить выделение серым цветом в iframe в Firefox без использования contenteditable - PullRequest
12 голосов
/ 18 июля 2011

В Firefox 3 и более поздних версиях (и, возможно, более старых версиях) при выборе содержимого внутри iframe всегда используется серый цвет фона выделения, используемый для документа, который в данный момент не имеет фокуса, даже если у iframe есть фокус.Единственное исключение, которое мне удалось найти, - это когда содержимое внутри iframe доступно для редактирования.Это не так в других браузерах.Вот пример, иллюстрирующий это:

http://jsfiddle.net/97Vjz/

К сожалению, это предотвращает стилизацию выделения внутри iframe с использованием псевдоэлемента CSS ::-moz-selection, поскольку он применяется только кне-серые выделения:

http://jsfiddle.net/YYXSY/1/

Мой вопрос: возможно ли предотвратить выделение серого в iframe в Firefox без с помощью contenteditable / designMode?

ОБНОВЛЕНИЕ

Это, кажется, происходит только на динамически записанных фреймах: использование отдельного файла и атрибута src решает проблему.Однако он мне нужен для работы с динамически написанными фреймами.

Ответы [ 3 ]

7 голосов
/ 20 июля 2011

Я только что попытался воспроизвести проблему с «настоящей» страницей в виде содержимого iframe, и тогда она работает так, как вы хотите: выделение синего цвета! (FF 5.0)

см .: http://jsfiddle.net/97Vjz/8/

Кажется, что только сгенерированный контент имеет эту проблему, поэтому вы можете создать страницу (php / asp (x)), которая генерирует контент для вас, чтобы обойти проблему.

Еще одно решение использовать контент, сгенерированный javascript, - загрузить его с src="javascript:'<html />'" (на самом деле это собственное решение Тима из комментариев ниже.)

Простой пример сценария: http://jsfiddle.net/97Vjz/9/

 iframe.src='javascript:\'<html><body>' + content + '</body></html>\'';
1 голос
/ 27 июля 2011

Гипотеза: Похоже, что для динамически написанных iFrames либо отображается XUL Iframe, либо движок Gecko не соблюдает стили.

Если не считать ошибку, единственный обходной путь, который я вижу, - это обернуть наше содержимое в textarea и стилизовать его, чтобы сделать его «невидимым»: http://jsfiddle.net/mrchief/YYXSY/19/

1 голос
/ 20 июля 2011

Существует свойство iframe, доступное в DOM-инспекторе Firebug contentDocument->designMode, для которого в iFrames установлено значение false. Принудительная установка этого значения через инспектор DOM активирует синюю подсветку, которую вы ищете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...