Possible to modify DOM during/before initial DOM parsing?

两盒软妹~` 提交于 2019-12-13 18:40:14

问题


Is it possible to modify the DOM during or before the initial DOM parsing? Or do I have to wait until the DOM is parsed and built before interacting with it? More specifically, is it possible to hinder a script element in DOM from running using userscripts/content scripts or similar in chrome or firefox?

Tried using eventListeners on DOMNodeInserted before the DOM is parsed, but these are only fired after the DOM is built.


回答1:


These are two separate questions:

1. Is it possible to modify the DOM during or before the initial DOM parsing?

Yes. As soon as the browser builds the root element, then you can start querying and mutating the DOM. Note that when your script runs, some of the page may still yet be unparsed, perhaps even still in transit on the network. Your script generally has access to any element declared in the source before the script tag containing/calling your script. This includes parent elements containing your script tag.

2. Is it possible to hinder a script element in DOM from running using userscripts/content scripts or similar in chrome or firefox?

No. All scripts are executed and one script can't prevent another script's initial execution. However, you can perhaps go back through and remove event handlers, and otherwise attempt to counteract the effects of a script. Although this scenario seems a bit shady and/or against the grain of normal JavaScript usage.




回答2:


I've actually looked into this a lot while developing an adblocker for Chrome. Basically, you can't use just Javascript to stop Javascript, especially since it would run simultaneously with the script element in question. So even if it would work it would cause a race condition.




回答3:


you can modify elements during document parsing, but after than this element has added to dom. for example

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



回答4:


Is it possible to modify the DOM during or before the initial DOM parsing?

Yes it is possible.

Start by completely preventing the document from getting parsed altogether then on the side, fetch the same document, do any processing on this document and then inject the resulting document in the page.

Here is how I currently do just that https://stackoverflow.com/a/36097573/6085033



来源:https://stackoverflow.com/questions/2575185/possible-to-modify-dom-during-before-initial-dom-parsing

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!