Скрытый текст можно выбрать в IE, несмотря на стиль = 'display: none'

Похоже, что это специфическая для IE функция. Я тестировал с использованием IE8. пользовательДжон Х имеет вклад, подтверждая в IE6 и IE7.

У меня есть текст, который встроен в мою страницу, и с самого начала создания элементаstyle = "display: none;"

Я не использую jQuery, чтобы скрыть текст, а текст не отображается. Хотя для дальнейшего раскрытия я получаю доступ к содержимому элемента, используя jQuery..html() метод.

Однако, если пользователь выбирает текстnearby мойdisplay:none элемент и копирует то, что было выбрано, скрытый текст включается. Как будто все было нормально.

Разметка выглядит так:

<code>...
<td align="left">
    Text they should see
    <div id="whateverButUnique" style="display:none;">Value I want hidden</div>
    Some other text
</td>
</code>

Вотиграть на скрипке где я могу воспроизвести проблему, используя IE & lt; 9.

Хотя это не является серьезной проблемой для данного конкретного приложения, оно застало меня врасплох, и я подумал, а не является ли это «функцией»? или если я что-то делал неправильно.

Большинство издругие вопросы Я видел относительноdisplay:none были их плакаты & apos; содержание как видимое. Опять же, мой контент по сути невидимuntil выбрано, скопировано и, наконец, вставлено.

Могу ли я запретить пользователям Internet Explorer находить этот контент путем копирования / вставки? Я понимаю, что они могли видеть это в Инструментах разработчика и просматривая источник.

Update: благодаря комментариям других пользователей я также попытался применить стильvisibility:hidden а такжеz-index=-1, пользовательДжон Х перепробовала много других скрывающихся попыток, но IE до сих пор живучи на разрешение этой функции проскочить. Спасибо за все прекрасные идеи!

Update: Спасибо за вопросХизер Уолтерс; значения, которые мне нужно использовать на странице, доступны только на стороне сервера, но затем я использую ихafter the page loads генерировать ссылку, используя дополнительную обработку из сторонней программы через jQuery / AJAX. Поэтому я создаю страницу со скрытыми, но включенными значениями, а затем оперирую этими скрытыми значениями, чтобы создать что-то полезное с ними.

Как только я закончу использовать их для создания чего-то полезного, я теперь понимаю, что могу стереть их все с помощью jQuery и получить дополнительный удар по производительности. Следующий код сделает это для всех, у кого включен JavaScript:

<code>$("[id^=whateverButUnique]").html("");
</code>

С потенциально сотнями элементов на странице эта дополнительная обработка не идеальна.

ВегаЯ не верюэто решение будет работать для меня, потому что я должен построить страницу и мой скрытый контент на стороне сервера. Все они встроены в цикл на стороне сервера с потенциально сотнями других элементов, поэтому у меня есть выбор: создать его на месте, пока сервер выкладывает все в таблицу (с включенным скрытым элементом), или выполнить цикл во второй раз. (болезненно) и попытайтесь заставить элементы отображаться: ни один из них не будет менее вероятным.

О, Боже, почемуЯ хотел верить в ваше решение. В IE8 скрытое поле не отображалось в блокноте; Тем не менее, я смог скопировать этот раздел и вставить его в Microsoft Word. Это больше не было скрыто.

Еще один фактор в работе: эта страница уже довольно тяжелая на JavaScript, поэтому я надеялся, что смогу найти решение, которое не позволило бы IE увидеть значения без добавления еще одного прохода через более 100 потенциальных элементов ... но мне, возможно, придется это сделать.

Update: Робин МабенПохоже, что это будетgreat обходной путь! Он предлагает скрыть ценности вdata-x пользовательский атрибут HTML5. Кажется, это работает, несмотря на мою (скорее всего) не HTML5-совместимую страницу. Пожалуйста, проголосуйте за его ответ, если вы также считаете его ценным вкладом.

Update: Подтверждено. Я успешно выполнил предложение Мабена и, следовательно, смог сократить количество проверок DOM - по одному на каждый элемент на моей странице. Я уже просматривал все DIV с элементами, которые хотел показать, и теперь я могу автоматически получить доступ к свойству данных одновременно. Это выглядит так в моей реализации:

<code><div style="display:none" data-call-number="..." id="stackLocatorLinkFillUp...">...</div>
</code>

Многоточие указывает на происходящие уникальные для меня операции. Идентификатор имеет простой числовой индикатор, который увеличивается на единицу для каждой записи.

<code>// Loop through all of the items on the page that start with my id
$("[id^=stackLocatorLinkFillUp]").each( function() {
    // ...
    // Grab the contents of the div
    var innerContent = $(this).html();
    // Extract the call number out of the data-call-number field
    var callNumPreEncoded = $(this).data("callNumber");
    // ...eventually...
    $(this).html(...).css("display","block");
});
</code>

Спасибо всем!

Ответы на вопрос(3)

Ваш ответ на вопрос