2017-10-17 49 views
1
getHTMLOfSelection: function() { 
    var range; 
    if (document.selection && document.selection.createRange) { 
     range = document.selection.createRange(); 
     // this.document.execCommand("Copy", true); 
     return range.htmlText; 
    } else if (window.getSelection) { 
     var selection = window.getSelection(); 
     if (selection.rangeCount > 0) { 
      range = selection.getRangeAt(0); 
      var clonedSelection = range.cloneContents(); 
      var div = document.createElement('div'); 
      div.appendChild(clonedSelection); 

      var elms = div.querySelectorAll("*[style]"); 
      Array.prototype.forEach.call(elms, function(elm) { 
       var clr = elm.style.display || ""; 
       if (clr === 'none') { 
        elm.innerText = ''; 
       } 
      }); 

      return div.innerHTML; 
     } else { 
      return ''; 
     } 
    } else { 
     return ''; 
    } 
} 

這是我的代碼,但是當CSS相對於寫入class,iddisplay:nonevisiblity:hiddenheight:0它不在的情況下工作。如何抓取只有可見的HTML沒有CSS?

+1

你能解釋一下什麼是在對於'那些東西是不工作?什麼是實際行爲,你期望什麼? – GolezTrol

+0

感謝您的回覆, 使用上述功能,我能夠抓住innerHTML,但問題是,抓住所有的HTML包括隱藏的功能,意味着那些使用CSS隱藏像(display:none ,可見性:隱藏和高度:0)。我不希望這些隱藏的HTML –

+0

'elm.style'會給你使用JavaScript或'style'屬性設置的特定元素的樣式。 使用['window.getComputedStyle'](https://developer.mozilla.org/nl/docs/Web/API/Window/getComputedStyle)獲取該元素的計算樣式。這應該讓你跳過隱藏的元素。 – GolezTrol

回答