Javascript Html和Internet Explorer:如何避免复制/粘贴隐藏元素
我有一个HTML5文档中的表格 我有一个视图选择器,它使用jQueryJavascript 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
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()
。你的建议没有考虑到隐藏儿童元素的问题。这是问题的核心。不过还是要谢谢你!