Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
页面加载后Javascript运行函数_Javascript_Opera_Onload - Fatal编程技术网

页面加载后Javascript运行函数

页面加载后Javascript运行函数,javascript,opera,onload,Javascript,Opera,Onload,我正在尝试用Javascript创建一个小的自动化脚本,我希望通过使用Opera的用户脚本功能来定义要运行的外部脚本来运行该脚本。我以前使用过这个功能来运行我用外部站点编写的脚本,效果很好 我需要等到页面加载后脚本才能运行,但我似乎无法让它正常工作。目前的代码是: if (addEventListener in document) { // use W3C standard method document.addEventListener('load', meerfirst(), fal

我正在尝试用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语句上设置了一个断点,它实际上从未中断过。该站点是否可以内置反用户脚本功能?或者有没有可能是我做错了什么来阻止这一切

将函数本身作为回调传递

addEventListener('load', meerfirst, false);
                  // no parens! ^^
通过插入括号,您可以立即(在加载之前)调用函数,并将其(无用、非函数)返回值传递给addEventListener



顺便说一句,既然您已经知道将在哪个浏览器上使用代码,为什么要在开始时进行功能测试?

将函数本身作为回调传递

addEventListener('load', meerfirst, false);
                  // no parens! ^^
通过插入括号,您可以立即(在加载之前)调用函数,并将其(无用、非函数)返回值传递给addEventListener


顺便说一句,既然您已经知道要在哪个浏览器上使用代码,为什么要在一开始就进行功能测试?

试试:

window.onload = function() 
{

meerfirst();

};
尝试:


您的答案很好地嵌套在O'Reilly的“Javascript:最终指南”中


这不仅会在浏览器完成加载时运行,还会处理跨浏览器差异。享受:)

您的答案很好地嵌套在O'Reilly的“Javascript:权威指南”中


这不仅会在浏览器完成加载时运行,还会处理跨浏览器差异。享受:)

此代码有几个问题:

if (addEventListener in document) { // use W3C standard method
    document.addEventListener('load', meerfirst(), false);
} else { // fall back to traditional method
    document.onload = meerfirst();
}
  • 您需要在if语句中的addEventListener周围加引号。您正在
    文档中查找属性名称,因此名称必须是字符串
    如果(

  • 您希望在addEventListener语句中按名称引用函数,而不是立即调用它。您应该删除括号-只使用
    meerfirst
    而不是
    meerfirst()

  • 分配给document.onload无效。查看我的答案,并改用window.onload

  • 将赋值更改为窗口.onload后,还需要删除括号。同样,您只是按名称引用函数,不希望在此时实际调用它

  • 最后,我建议收听
    DOMContentLoaded
    而不是
    load
    ——除非您要运行一些需要等待所有图像加载的代码


  • 该代码有几个问题:

    if (addEventListener in document) { // use W3C standard method
        document.addEventListener('load', meerfirst(), false);
    } else { // fall back to traditional method
        document.onload = meerfirst();
    }
    
  • 您需要在if语句中的addEventListener周围加引号。您正在
    文档中查找属性名称,因此名称必须是字符串
    如果(

  • 您希望在addEventListener语句中按名称引用函数,而不是立即调用它。您应该删除括号-只使用
    meerfirst
    而不是
    meerfirst()

  • 分配给document.onload无效。查看我的答案,并改用window.onload

  • 将赋值更改为窗口.onload后,还需要删除括号。同样,您只是按名称引用函数,不希望在此时实际调用它

  • 最后,我建议收听
    DOMContentLoaded
    而不是
    load
    ——除非您要运行一些需要等待所有图像加载的代码


  • 我以前尝试过window.onload方法,但没有效果。正如在上面的评论中所提到的,我越来越认为它与从未执行的脚本有关,这就提出了一个问题:@missingno提到的参数是addEventListener调用的问题。我以前尝试过window.onload方法,但没有用。正如在上面的评论中提到的,我认为它越来越与脚本从未执行有关,这就提出了一个问题,@missingno提到的paren是addEventListener调用的问题。它是立即调用meerfirst,而不是加载。请参见此处:。如下文提到的@missingo所述,移除Paren。它似乎没有调用meerfirst,因为nameForm在加载页面之前第一次调用它时返回undefined。它立即调用meerfirst,而不是在加载时。请参见此处:。如下文提到的@missingo所述,移除Paren。它似乎没有调用meerfirst,因为nameForm在加载页面之前第一次调用它时返回undefined。我还建议将
    var
    放在定义nameForm的第一行前面。这使得“nameform”成为局部变量而不是全局变量。我还建议将
    var
    放在定义nameform的第一行前面。这使得“nameform”成为局部变量而不是全局变量。