我正在研究一個擴展插件,它將一個div插入到DOM的body元素中。現在我正在創建一個事件處理程序,它在加載時觸發以創建元素。這意味着頁面完全加載,然後插入我的div,這意味着用戶在沒有div的情況下看到頁面,直到加載完成,然後彈出div。我希望div在頁面加載時在那裏。在任何其他元素被寫入之前是否有辦法劫持body元素?或者,我必須以某種方式隱藏內容,直到所有內容都已加載完畢,這當然意味着用戶會在一段時間內看到空白屏幕。頁面加載時插入DOM元素,而不是之後
如果可能,我想避免jQuery。
我正在研究一個擴展插件,它將一個div插入到DOM的body元素中。現在我正在創建一個事件處理程序,它在加載時觸發以創建元素。這意味着頁面完全加載,然後插入我的div,這意味着用戶在沒有div的情況下看到頁面,直到加載完成,然後彈出div。我希望div在頁面加載時在那裏。在任何其他元素被寫入之前是否有辦法劫持body元素?或者,我必須以某種方式隱藏內容,直到所有內容都已加載完畢,這當然意味着用戶會在一段時間內看到空白屏幕。頁面加載時插入DOM元素,而不是之後
如果可能,我想避免jQuery。
我不是100%確定,但看着Chrome擴展開發者指南,看起來好像如果您使用的是內容腳本並在您的擴展程序的清單中指定run_at
字段爲document_start
,那麼它應該在注入文件之前DOM被構建。
正確。注意:在document_start中,'document.body尚不存在。你必須使用'document.documentElement.appendChild(element);' –
@RobW注入,所以注入的'div'將被放置在'body'之外?這看起來像不正確的HTML。 – Stan
@Stan在document_start中,唯一存在的標記是'',所以它是唯一的選項。我沒有遇到過這個方法失敗的頁面。 –
使用「run_at」:「document_end」將保證div儘早被注入*,儘管它不能保證用戶不會在DOM中看到這種變化。 –