Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Html和Internet Explorer:如何避免复制/粘贴隐藏元素_Javascript_Jquery_Html_Css_Internet Explorer - Fatal编程技术网

Javascript Html和Internet Explorer:如何避免复制/粘贴隐藏元素

Javascript Html和Internet Explorer:如何避免复制/粘贴隐藏元素,javascript,jquery,html,css,internet-explorer,Javascript,Jquery,Html,Css,Internet Explorer,我有一个HTML5文档中的表格 我有一个视图选择器,它使用jQueryhide()和show()隐藏/显示一些行 当用户选择表格(以编程方式,使用“全选”按钮,代码见下文),然后复制/粘贴到Word或Outlook电子邮件中时,其行为不同于FF和IE FF:不使用style='display:none;'复制元素。这是人们期望的行为 IE:复制所有,粘贴所有,所以我的视觉“技巧”对IE用户来说是无用的 我添加我的selectAll功能。只需使用选择器并选择其中的所有文本即可。这是我从jQue

我有一个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技巧吗?

顺便说一句,我将否决任何提议:

  • 更改用户

  • 强制用户更改浏览器

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


    • 讨厌的黑客,但你可以:

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

        • 这个问题似乎已经被问过多次了()

          似乎还没有一个对每个人都有效的回应

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

          其他人建议克隆该表,只复制另一个表中隐藏的内容,但这会导致以后其他浏览器出现问题,这些浏览器工作正常

          你可以使用上面的方法,但这是一个讨厌的黑客

          有一个答案可能会让你感兴趣,但我不确定你想复制什么,以及这是否值得努力

          如果所有其他方法都失败了,以下是一些其他建议:

          • 更改用户

          • 强制用户更改浏览器

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


          :)当我在漫画论坛上见到你时,我会给你一个+1!:)我只是开玩笑,我真的在寻找一个真正有用的答案!如果我不打算帮忙,我就不会是个聪明的混蛋!是的,我知道。因此,我以非常友好的方式回答。我想我的“:)”足以让你明白我在笑你怎么调用函数
          selectText()
          ?当您调用它时,使用
          :visible
          过滤元素,例如
          $('input:visible')。选择text()
          我使用的是
          $('DIV.exportable_area')。选择text()
          。你的建议没有考虑到隐藏儿童元素的问题。这是问题的核心。不过还是要谢谢你!