【发布时间】:2011-11-05 21:59:51
【问题描述】:
我正在尝试在 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 语句上设置了一个断点,它实际上从未中断过它。该站点是否可以内置反用户脚本功能?还是有可能我做错了什么来阻止这个执行?
【问题讨论】:
-
它立即调用 meerfirst,而不是加载。见这里:jsfiddle.net/ThinkingStiff/6ajFz。删除括号,如下所述的@missingo。它似乎没有调用 meerfirst,因为 nameForm 在页面加载之前第一次调用它时返回 undefined。
标签: javascript opera onload