Javascript document.onload不适合我吗?

Javascript document.onload不适合我吗?,javascript,Javascript,我只是在玩弄GreaseMonkey的用户脚本,下面是我尝试做的一些简单的事情 function test() { document.getElementById('elementhere').innerHTML = 'test'; } document.onload = test(); 如果我转到我想使用它的页面并执行“运行”或“重新加载并运行”操作,它就会工作,但它不会自动运行,我正试图通过使用document.onload来实现这一点。当您编写document.onload=test()

我只是在玩弄GreaseMonkey的用户脚本,下面是我尝试做的一些简单的事情

function test() {
document.getElementById('elementhere').innerHTML = 'test';
}
document.onload = test();

如果我转到我想使用它的页面并执行“运行”或“重新加载并运行”操作,它就会工作,但它不会自动运行,我正试图通过使用document.onload来实现这一点。

当您编写
document.onload=test()
时,您正在调用
test
函数,并将其返回值分配给
onload
处理程序。这显然不是你想要的

document.onload = test;

这将把对
test
函数的引用分配给
onload
处理程序。当事件触发时,即调用您的函数。

它正在工作,但您可以使用alternate

window.init = test;
你试过这个吗

<body onload="test()">
也许可以这样做:

<body onload="test()">
我会试一试,因为:

我知道把一个链接发布到一个链接上是很蹩脚的,但你会明白我为什么这么做(希望如此)


干杯

如果您使用的是Greasemonkey,那么您实际上不需要using onload事件,因为Greasemonkey脚本仅在触发
DOMContentLoaded
时才被调用

Greasemonkey用户脚本中的代码在 DOMContentLoaded事件激发(自GM 0.8.6起在事件捕获期间)。信息技术 是由Mozilla实现的DOM事件,类似于window.onload。 但是,由于它只等待DOM加载,而不是 整个页面(包括图像、样式表等)都会发生这种情况 早一点


我认为您只需要在没有任何事件侦听器的情况下调用
test()

这是因为您分配的是
test
函数的结果,而不是函数本身,因为最后一行的括号
()

移除它们,它可能会工作

如果没有,则:

显然,这是故意的。[
Chrome-v57
]
使用
document.addEventListener(“DOMContentLoaded”)取而代之


请参阅:

无需调用页面上的函数。。您只需要使用下面的代码,这是涂层的最佳实践

window.onload = function() {
    document.getElementById("txtCaptcha").value = code;
    document.getElementById("txtCaptchaDiv").innerHTML = code;
    }
您需要的是:

window.onload = function () {
// do the work after everything was loaded (DOM, media elements)
}
文档。onload它不存在。如果您至少以文档中的某个特定元素为目标,则该方法有效,例如:

document.querySelector("img").onload = function ()
 {// do your thing after 'img' was loaded}
如果要在DOM是唯一准备好的元素而不等待媒体元素加载后执行某些代码,则可以使用其他选项,如:

  • 导入异步脚本标记并加载文件,代码如下: 您可以在DOM中的任何位置放置此标记,它不会中断任何内容,将在DOM完成加载后加载。你应该看看那件事

  • 如果您再次查看,他们将在注释部分建议您使用可由addEventListener处理的DOMContentLoaded和DOMFrameContentLoaded事件。因此,如果您这样做:

document.addEventListener('DOMContentLoaded',handlerFunc)

我会为你工作的

我希望这能对你有所帮助

window.onload = function () {
// do the work after everything was loaded (DOM, media elements)
}
document.querySelector("img").onload = function ()
 {// do your thing after 'img' was loaded}