Показать сообщение отдельно
  #5 (permalink)  
Старый 26.07.2018, 23:33
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,590

Nexus, это наркомания, но вот тебе цензор
(function start(){
  var word = 'CPS.';
  
  if(document.readyState !== 'complete')
    return addEventListener('load', start);
  
  var elements = document.getElementsByTagName('*'), 
      range = document.createRange(),
      i = elements.length;
  while(i--){
    var nodes = elements[i].childNodes, j = nodes.length;
    while(j--) 
      if(nodes[j].nodeType === 3){
        var position = 0;
        while((position = nodes[j].data.indexOf(word, position)) !== -1){
           range.setStart(nodes[j], position);
           range.setEnd(nodes[j], position = position + word.length);
           censor(range);
        }
      }
  }
  range.detach();
}());

function censor(elt) {
	var rects = elt.getClientRects();
	for (var i = 0; i != rects.length; i++) {
		var rect = rects[i];
		var tableRectDiv = document.createElement('div');
		tableRectDiv.style.position = 'absolute';
		tableRectDiv.style.background = '#000';
		var scrollTop = document.documentElement.scrollTop || document.body.scrollTop;
		var scrollLeft = document.documentElement.scrollLeft || document.body.scrollLeft;
		tableRectDiv.style.margin = tableRectDiv.style.padding = '0';
		tableRectDiv.style.top = (rect.top + scrollTop) + 'px';
		tableRectDiv.style.left = (rect.left + scrollLeft) + 'px';
		tableRectDiv.style.width = (rect.width - 2) + 'px';
		tableRectDiv.style.height = (rect.height - 2) + 'px';
		document.body.appendChild(tableRectDiv);
	}
}
Можно попробовать прям на этой странице.)

Сейчас закрывает только конкретное слово, но легко исправить стиль, чтоб закрывал всю строку. Ну и удалять куски текста с помощью range тоже не сложно, если нужно.
С изменением окна браузеа - да, придётся перерисовывать.
__________________
29375, 35

Последний раз редактировалось Aetae, 26.07.2018 в 23:38.
Ответить с цитированием