繁体   English   中英

HTML和Internet Explorer:如何避免隐藏/复制的元素被粘贴

[英]Html and Internet Explorer: How to avoid hidden elements to be copied/pasted

我有一个HTML5文档中的表格。

我有一个视图选择器,它使用jQuery hide()show()隐藏/显示一些行。

当用户选择表格时(通过编程,使用“全选”按钮,请参见下面的代码),然后将其复制/粘贴到例如Word或Outlook电子邮件中,其行为不同于FF和IE。

  • FF:不复制style='display: none;'元素 这是期望的行为
  • IE:复制所有内容,然后粘贴所有内容,因此我的视觉“窍门”对于IE用户而言毫无用处。

我添加了selectAll函数。 只需一个选择器,然后选择其中的所有文本即可。 这是我从jQuery论坛复制/粘贴的内容。

jQuery.fn.selectText = function(){
    var doc = document;
    var element = this[0];
    // console.log(this, element);
    if (typeof element == 'undefined') {
        return;
    }
    if (doc.body.createTextRange) {
        var range = document.body.createTextRange();
        range.moveToElementText(element);
        range.select();
    } else if (window.getSelection) {
        var selection = window.getSelection();        
        var range = document.createRange();
        range.selectNodeContents(element);
        selection.removeAllRanges();
        selection.addRange(range);
    }
};

如何仅选择可见元素? 或者...还有其他html / js技巧吗?

顺便说一句, 我将投票反对将提出以下建议的人

  • 改变用户

  • 强迫用户更换浏览器

  • 问我只渲染可见的单元格并更改服务器代码

看来这个问题已经被问过多次了。 (1) -( 2

似乎没有一个对每个人都有效的答复。

您可以在jQuery中使用is.(':visible') ,但不确定是否可以转换回javascript(不是很好)。

其他人建议克隆表,仅复制另一个表中隐藏的内容,但随后在其他运行良好的浏览器上引起问题。

您可以使用上面的方法行得通,但这是一个讨厌的技巧。

有一个答案在这里可能是你的兴趣,但我不知道你要复制的内容,如果这是值得的。

<joke>

如果其他所有方法均失败,那么这里有一些其他建议:

  • 改变用户

  • 强迫用户更换浏览器

  • 仅渲染可见的单元格并更改服务器代码

</joke>

讨厌的骇客,但您可以:

  • 使用js onload克隆表,在页面上的其他位置显示:无
  • 实际上,“隐藏”行会将其从原始表的DOM中删除
  • 通过从表的隐藏克隆版本中替换来恢复隐藏行

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM