这似乎是特定于 IE 的“功能”。我用IE8测试过。用户John H通过在 IE6 和 IE7 中确认做出了贡献。
我有一些文本内置到我的页面中,并且从元素创建的开始就具有style = "display: none;"
我没有使用 jQuery 来隐藏文本,并且文本没有“显示”。虽然,为了进一步披露,我确实使用 jQuery 的.html()
方法访问元素的内容。
但是,如果用户选择我的元素附近display:none
的文本并复制已选择的内容,则隐藏的文本将被包含在内。就好像它一直正常显示一样。
标记如下所示:
...
<td align="left">
Text they should see
<div id="whateverButUnique" style="display:none;">Value I want hidden</div>
Some other text
</td>
这是一个小提琴,我可以使用 IE<9 重现该问题。
虽然这对这个特定的应用程序来说不是一个严重的问题,但它让我措手不及,我想知道这是一个“功能”还是我做错了什么。
我见过的大多数其他问题display:none
都让他们的海报内容可见。同样,在选择、复制和最后粘贴之前,我的内容基本上是不可见的。
我可以通过复制/粘贴来阻止 Internet Explorer 用户找到此内容吗?我意识到他们可以在开发者工具和查看源代码中看到它。
更新:感谢其他用户的评论,我也尝试过应用visibility:hidden
and的样式z-index=-1
。用户John H尝试了许多其他隐藏尝试,但 IE 至今仍顽固地允许此功能通过。感谢所有伟大的想法!
更新:感谢您询问Heather Walters;我需要在页面上使用的值仅在服务器端可用,但我在页面加载后使用它们来生成链接,使用外部程序通过 jQuery/AJAX 进行的额外处理。因此,我使用隐藏但包含的值构建页面,然后对这些隐藏的值进行操作以构建对它们有用的东西。
但是,一旦我完成使用它们来构建有用的东西,我现在意识到我可以通过 jQuery 将它们全部清除并获得额外的性能影响。以下代码将为启用 javascript 的每个人完成此操作:
$("[id^=whateverButUnique]").html("");
由于页面上可能有数百个元素,因此这种额外的处理并不理想。
vega,我不相信这个解决方案对我有用,因为我必须在服务器端构建页面和我的隐藏内容。它们都构建在服务器端循环中,可能包含数百个其他元素,因此我可以选择在服务器将所有内容放在表格中(包括隐藏元素)时将其构建到位,或者再次循环遍历它(痛苦)并尝试强制元素显示:无在不太可能被选中的地方。
Ohgodwhy,我想相信你的解决方案。在 IE8 中,隐藏字段没有出现在记事本中;但是,我能够复制该部分并将其粘贴到 Microsoft Word 中。它不再隐藏。
另一个起作用的因素:这个页面已经很重 javascript 所以我希望我能找到一个解决方案来阻止 IE 看到这些值而不添加另一个通过 100 多个潜在元素的传递......但我可能不得不这样做。
更新:Robin Maben的建议看起来将是一个很好的解决方法!他的建议是隐藏data-x
自定义 HTML5 属性中的值。尽管我的(很可能)不符合 HTML5 的页面,这似乎是有效的。如果您也认为这是一个有价值的贡献,请对他的回答进行投票。
更新:已确认。我已经成功地实现了 Maben 的建议,因此能够减少 DOM 查找的次数——我页面上的每个元素都查找一次。我已经用我想要显示的项目遍历了所有 DIV,现在我可以同时自动访问 data 属性。这在我的实现中看起来像这样:
<div style="display:none" data-call-number="..." id="stackLocatorLinkFillUp...">...</div>
省略号表示正在进行的独特操作。id 有一个简单的数字指示符,每条记录递增一个。
// 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");
});
感谢大家!