I have tried "run_at": "document_start", but there is no DOM when the extension gets control, so I can not insert the script into head. Also, tried to use DOMNodeInserted, but it is not fired for head. if I try to insert the script on first DOMNodeInserted event, it gets executed after the webpage's scripts.
            Asked
            
        
        
            Active
            
        
            Viewed 222 times
        
    3
            
            
        1 Answers
4
            The root element always exist. You can just append the <script> to the <html> element:
var s = document.createElement('script');
s.textContent = 'console.log("Test");';
document.documentElement.appendChild(s);
s.parentNode.removeChild(s); // Just to clean-up.
 
    
    
        Rob W
        
- 341,306
- 83
- 791
- 678
- 
                    There is no guarantee about the executing order of dynamic inserted script tag. So this method may fail in some time. – tsh Aug 07 '20 at 09:50
 
    