2014-02-06 91 views
2

我有一個TABLE,在HTML5文檔中。Html和Internet Explorer:如何避免隱藏的元素被複制/粘貼

我有一個視圖選擇器隱藏/顯示一些行,使用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技巧?

BTW 我會downvote誰就將提出

  • 改變用戶

  • 強制用戶更改瀏覽器

  • 問我要呈現唯一可見的細胞和變化服務器代碼

+1

:)我會給你一個+1的時候,我會在漫畫論壇認識你! :) – realtebo

+0

我只是在開玩笑,我真的在尋找一個真正有用的答案!如果我打算不幫忙的話,不會是一個自作聰明! – Albzi

+1

是的,我知道。所以我回復了我的意見。我認爲我的':)'足以讓你明白我在笑 – realtebo

回答

1

看起來好像這個問題已經被多次詢問過。 (1) - (2

看起來好像還沒有一個響應,適用於所有人。

你可以在jQuery中使用is.(':visible'),但不確定是否會轉換回javascript(不太擅長)。

其他人建議克隆表並只複製隱藏在其他表中的內容,但隨後會導致其他瀏覽器出現問題,並且工作正常。

你可以使用上面的方法,它可以工作,但它是一個討厭的黑客。

有一個答案here這可能是你感興趣的,但我不確定你想要複製什麼,如果這是值得的努力。

<joke>

如果一切都失敗了,這裏有一些其他建議:

  • 改變用戶

  • 強制用戶更改瀏覽器

  • 只渲染可見的細胞和變化服務器代碼

</joke>

+1

...我更改了服務器代碼... sgrunt ... – realtebo

0

討厭的黑客,但你可以:

  • 克隆與JS的onload其他地方的頁面上顯示的表:無
  • 「隱藏」行實際上是從原始表的DOM刪除它們
  • 通過替換隱藏克隆版本的表來恢復隱藏行