Скрытый текст можно выбрать в 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>
Спасибо всем!