[英]document.onload not working for me?
好吧,我只是在玩 GreaseMonkey 的用戶腳本,這只是我嘗試做的一些簡單的事情;
function test() {
document.getElementById('elementhere').innerHTML = 'test';
}
document.onload = test();
如果我轉到要使用它的頁面並執行“運行”或“重新加載並運行”,它會起作用 - 但它不會自動運行,我試圖通過使用 document.onload 來實現。
你需要的是:
window.onload = function () {
// do the work after everything was loaded (DOM, media elements)
}
document.onload它不存在。 如果您至少針對文檔中的某些特定元素,它會起作用,例如:
document.querySelector("img").onload = function ()
{// do your thing after 'img' was loaded}
如果您想在 DOM 是唯一准備好而無需等待媒體元素加載的元素之后執行一些代碼,您還有其他選擇,例如:
導入使用代碼加載文件的異步腳本標簽:您可以將此標簽放置在 DOM 中任何您想要的位置,它不會中斷任何內容,將在 DOM 完成加載后加載。 您應該查看有關此內容的MDN 文檔。
如果您再次查看MDN 文檔,他們會在注釋部分建議您使用可由 addEventListener 處理的 DOMContentLoaded 和 DOMFrameContentLoaded 事件。 所以,如果你這樣做:
document.addEventListener('DOMContentLoaded', handlerFunc);
會為你工作。
我希望這對你有幫助......
當您編寫document.onload = test()
,您正在調用test
函數,並將其返回值分配給onload
處理程序。 這顯然不是你想要的。
document.onload = test;
這會將test
函數的引用分配給onload
處理程序。 當事件觸發,那就是當你的函數將被調用。
這是因為由於最后一行的括號()
,您正在分配test
函數的結果而不是函數本身。
刪除它們,它可能會起作用。
如果沒有,那么:
顯然這是設計使然。 [ Chrome - v57
]
使用document.addEventListener("DOMContentLoaded", <function_name>);
反而。
也許這樣做:
<body onload="test()">
或者這不是你要找的? 如果您想在沒有上面的 HTML 位的情況下執行此操作,可以嘗試用窗口替換文檔:
window.onload = function ()
{
document.getElementById('elementhere').innerHTML = 'test';
}
因為這個,我會試一試:
window.onload 與 document.onload
我知道發布鏈接的鏈接是蹩腳的,但你會明白我為什么這樣做(希望如此)。
干杯!
不需要調用頁面上的函數..只需要使用下面的代碼,這是編碼的最佳實踐
window.onload = function() {
document.getElementById("txtCaptcha").value = code;
document.getElementById("txtCaptchaDiv").innerHTML = code;
}
它的工作,但你可以使用替代
window.init = test;
如果您使用的是 Greasemonkey,那么您實際上並不需要 using onload 事件,因為只有在DOMContentLoaded
被觸發時才會調用 Greasemonky 腳本。
Greasemonkey 用戶腳本中的代碼在 DOMContentLoaded 事件觸發時被調用(在 GM 0.8.6 的事件捕獲期間)。 它是一個由 Mozilla 實現的 DOM 事件,類似於 window.onload。 然而,因為它只等待 DOM 加載,而不是整個頁面(包括圖像、樣式表等),所以它發生得更快。
http://wiki.greasespot.net/DOMContentLoaded
我認為您只需要在沒有任何事件偵聽器的情況下調用test()
即可。
你試過這個嗎?
<body onload="test()">
要么
$(document).ready(function test() {
document.getElementById('elementhere').innerHTML = 'test';
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.