【问题标题】:Html and Internet Explorer: How to avoid hidden elements to be copied/pastedHtml 和 Internet Explorer:如何避免隐藏元素被复制/粘贴
【发布时间】:2014-03-03 07:38:28
【问题描述】:

我有一个表格,在 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 ! :)
  • 我只是在开玩笑,我真的在寻找一个真正有用的答案!如果我打算不提供帮助,就不会是个聪明人了!
  • 是的,我知道。所以我很反常地回答。我认为我的“:)”足以让你明白我在笑
  • 如何调用函数selectText()?当你调用它时,过滤元素使用:visible,例如$('input:visible').selectText()
  • 我正在使用$('DIV.exportable_area').selectText()。您的建议没有考虑隐藏子元素的问题。这是问题的核心。不过还是谢谢!

标签: javascript jquery html css internet-explorer


【解决方案1】:

讨厌的 hack,但你可以:

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

【讨论】:

    【解决方案2】:

    这个问题好像已经被问过很多次了。 (1) - (2)

    似乎没有适合所有人的回应。

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

    其他人建议克隆该表并仅复制另一个隐藏的表中的内容,但这会导致稍后其他运行正常的浏览器出现问题。

    您可以使用上述方法,但它是一个讨厌的黑客。

    有一个答案 here 您可能会感兴趣,但是我不确定您要复制什么以及这是否值得。

    <joke>

    如果一切都失败了,这里有一些其他建议:

    • 更改用户

    • 强制用户更换浏览器

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

    </joke>

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-04-13
      • 1970-01-01
      • 2019-06-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-21
      相关资源
      最近更新 更多