Pergunta

É possível modificar o DOM durante ou antes da análise inicial do DOM? Ou tenho que esperar até que o DOM seja analisado e construído antes de interagir com ele? Mais especificamente, é possível impedir um elemento de script no DOM de executar usando scripts de scripts/conteúdo do Usuários ou similares no Chrome ou Firefox?

Tentei usar o EventListenners no DomNodeInsert antes do DOM ser analisado, mas estes são disparados apenas após a construção do DOM.

Foi útil?

Solução

Estas são duas perguntas separadas:

1. É possível modificar o DOM durante ou antes da análise inicial do DOM?

Sim. Assim que o navegador criar o elemento raiz, você poderá começar a consultar e mudar o DOM. Observe que, quando o seu script é executado, parte da página ainda pode ser incomparável, talvez até mesmo em trânsito na rede. Seu script geralmente tem acesso a qualquer elemento declarado na fonte antes da A tag de script que contém/chama seu script. Isso inclui elementos pais que contêm sua tag de script.

2. É possível impedir um elemento de script no DOM de executar usando scripts de scripts/conteúdo ou similares no Chrome ou Firefox?

Não. Todos os scripts são executados e um script não pode impedir a execução inicial de outro script. No entanto, talvez você possa voltar e remover os manipuladores de eventos e tentar neutralizar o efeitos de um script. Embora esse cenário pareça um pouco sombrio e/ou contra o grão de uso normal de JavaScript.

Outras dicas

Na verdade, eu analisei muito isso ao desenvolver um adblocker para o Chrome. Basicamente, você não pode usar apenas JavaScript para interromper o JavaScript, especialmente porque ele funcionaria simultaneamente com o elemento de script em questão. Portanto, mesmo que funcionasse, causaria um condição de corrida.

Você pode modificar elementos durante a análise de documentos, mas depois que esse elemento foi adicionado ao DOM. por exemplo

<div id="example"></div>
<script>
    document.getElementById('example').innerHTML = 'hello';
</script>
<div>something else</div>

É possível modificar o DOM durante ou antes da análise inicial do DOM?

Sim, é possível.

Comece impedindo completamente o documento de ser analisado por completo e, em seguida, busque o mesmo documento, faça qualquer processamento neste documento e, em seguida, injete o documento resultante na página.

Aqui está como eu atualmente faço exatamente isso https://stackoverflow.com/a/36097573/6085033

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top