Extensão do Chrome para substituir texto, em páginas da Web e publicações do Facebook, antes que o texto seja exibido

Estou trabalhando em uma extensão do Chrome que substitui strings especificadas ou RegEx's no texto de uma página da web.

Funciona bem no geral, mas com dois problemas que gostaria de resolver:

(1) O texto da página original, inalterado, é exibido antes da substituição do texto.

(2) A substituição de texto não afeta as publicações do Facebook que são carregadas dinamicamente após você rolar para a parte inferior da página.

Aqui está o código, adaptado dehttps://stackoverflow.com/a/6012345#6012345 com pequenas alterações.

// manifest.json

{
    "manifest_version": 2,
    "name": "Replace Text",
    "version": "1.0", 

    "content_scripts": [ {
        "js": [ "jquery.min.js", "replace.js" ],
        "matches": [ "<all_urls>" ],
        "run_at": "document_end"
    } ]
}


// replace.js

jQuery.fn.textWalk = function( fn ) {
    this.contents().each( jwalk );

    function jwalk() {
        var nn = this.nodeName.toLowerCase();
        if( nn === '#text') {
            fn.call( this );
        } else if( this.nodeType === 1 && this.childNodes && this.childNodes[0] && nn !== 'script' && nn !== 'textarea' ) {
            $(this).contents().each( jwalk );
        }
    }
    return this;
};

$('body').textWalk(function() {
    this.data = this.data.replace('This Text', 'That Text');
    this.data = this.data.replace(/[Rr]eplace\s[Ss]ome\s[Tt]ext/g, 'with other text');  
});

Eu encontrei algumas respostas parciais on-line, mas não consegui que elas funcionassem corretamente.

Por exemplo, uma solução proposta era mudar"run_at": "document_end" para"run_at": "document_start". Isso executa scripts de conteúdo antes do DOM ser construído, portanto, em teoria, ele deve fazer a substituição do texto antes que qualquer coisa seja exibida. Mas no meu caso, a extensão parou de substituir o texto.

questionAnswers(1)

yourAnswerToTheQuestion