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 тоже не сложно, если нужно.
С изменением окна браузеа - да, придётся перерисовывать.