javascript - 页面加载后的Javascript运行功能

原文 标签 javascript opera onload

我正在尝试使用Javascript创建一个小的自动化脚本,该脚本要使用Opera的用户脚本功能来定义要运行的外部脚本,以便与站点一起运行。在使用外部站点编写的脚本之前,我已经使用了此功能,以达到很好的效果。

我需要等到页面加载后脚本才能运行,但是我似乎无法正常运行。目前的代码是:

if (addEventListener in document) { // use W3C standard method
    document.addEventListener('load', meerfirst(), false);
} else { // fall back to traditional method
    document.onload = meerfirst();
}

function meerfirst(){
    nameForm = document.forms['aspnetForm'];
    nameForm.elements('ctl00$CPH1$NewQuoteView$TitlesView$DropDownListTitles').value = 'MR:TRUE:MR';
    nameForm.elements('ctl00$CPH1$NewQuoteView$TextBoxFirstName').value = 'James';
 }


这是我自己的功能,加上通过此处另一个问题找到的if语句。我也尝试过window.onload,但仍然没有用。

奇怪的是,Opera似乎根本没有执行脚本,就好像我在if语句上设置了一个断点一样,它实际上从未中断过。该网站是否可以内置反用户脚本功能?还是我可能做错了什么才能停止执行?

最佳答案

此代码有几个问题:

if (addEventListener in document) { // use W3C standard method
    document.addEventListener('load', meerfirst(), false);
} else { // fall back to traditional method
    document.onload = meerfirst();
}



您需要在if语句中的addEventListener周围加上引号。您正在document中寻找属性名称,因此名称必须是字符串:if( 'addEventListener' in document )
您想在addEventListener语句中按名称引用该函数,而不是立即调用它。您应该删除括号-仅使用meerfirst而不是meerfirst()
分配给document.onload无效。请参阅我对window.onload vs document.onload的回答,并改用window.onload。
将分配更改为window.onload之后,您还需要删除括号。同样,您只是按名称引用该函数,并且不希望此时实际调用它。
最后,我建议您监听DOMContentLoaded而不是load-除非您要运行一些需要等待所有图像加载完毕的代码。

关于javascript - 页面加载后的Javascript运行功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8023587/

相关文章:

javascript - 带下拉按钮的预先 Bootstrap

javascript - 具有Ajax建议的jQuery自动完成不返回

css - box-shadow 的过渡在 Opera 中不起作用

css - 适用于Opera和Firefox的正确边框渐变语法,我的webkit语法工作正常

JQuery val() 不适用于 Opera 中的 textarea

javascript - 客户端javascript : how can I get the response header of a HTTP request when CORS is not allowed?

javascript - 静态表更改上的 DOM 监听器

javascript - html pageshow 和 load 事件有什么区别?

javascript - 页面加载时类之间的随机切换

javascript - 加载 Javascript 的最佳实践