【问题标题】:Internet Explorer is copying hidden table elementsInternet Explorer 正在复制隐藏的表格元素
【发布时间】:2015-07-09 20:09:24
【问题描述】:

我正在使用以下 jfiddle 中的 jquery 命令: https://jsfiddle.net/esend7881/3uu0tpv1/2/

也就是说,我正在使用:

$(document).ready(function () {
    $('table#safe-distances-table').dblclick(function () {
        $('tr.no-impact').toggle('slow');
    });
});

当双击表格时,使 HTML 表格中的某些行关闭。 Jquery 工作正常,但我真正的问题是从 Internet Explorer 复制和粘贴。

我仅限于在某些环境中使用 Internet Explorer,我希望当行被隐藏时,我会从 I.E. 复制并粘贴表格。对于 Outlook,隐藏的行不会随之而来。相反,他们是!

您可以在 JFiddle 中尝试使用 Internet Explorer。双击表格后,尝试将整个表格复制并粘贴到 Outlook 中,您将看到所有行都出现了!

【问题讨论】:

  • 复制的是 HTML,不是渲染。
  • 微软,在他们无限的智慧中,实际上在您复制时将copies multiple things 复制到剪贴板——它通常会将 HTML 和最终呈现的文本 both 放在剪贴板上。它怎么知道要粘贴什么? 在 MS-Word 中,它是可配置和可更改的,但通常Ctrl+V(现在)使用格式粘贴...但试试Shift+Ctrl+Vpaste without formatting
  • 问题是,我确实想要格式化——但只需要可见输出的格式化!我可以在这里两全其美吗?

标签: javascript jquery html css internet-explorer


【解决方案1】:

在 IE 中未经测试 - 这在理论上应该有效。

在复制隐藏行之前,您需要remove()。这使得将行重新双击有点繁琐 - 您需要在删除它们之前跟踪原始数据。

This fiddle seems to do the trick. 它保留原始 HTML,以及使用 $.data 是否处于“切换”状态。

$('table#safe-distances-table').dblclick(function () {
    var $el = $(this);
    if($el.data('toggled')){
        $el.html($el.data('all'));
        var $rowsToHide = $('tr.no-impact');
        $rowsToHide.hide();
        $rowsToHide.toggle('slow');
        $el.data('toggled',false);
    } else {
        var $rowsToHide = $('tr.no-impact');
        $el.data('all', $el.html());
        $rowsToHide.toggle('slow', function(){
            $rowsToHide.remove();
        });
        $el.data('toggled',true);
    }
});

【讨论】:

  • 在 jquery 中,是否有用于复制粘贴功能的事件处理程序?也许那时我可以执行 .remove() 函数?
  • 有-$(el).on('copy', function(){ ... });。但我不明白你为什么要打扰 - 上面的 sn-p 应该可以解决问题。一旦元素被隐藏(display:none;),你可以删除它们(在这种情况下。可能在其他时候你想保留 DOM 上的元素,只是不让它们可见 - 我不认为这是其中之一。)编辑 - 很高兴它可以工作:o)
猜你喜欢
  • 2014-06-25
  • 1970-01-01
  • 2014-03-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多