当前位置:  开发笔记 > 编程语言 > 正文

为什么document.addEventListener('load',function)不能在greasemonkey脚本中工作?

如何解决《为什么document.addEventListener('load',function)不能在greasemonkey脚本中工作?》经验,为你挑选了2个好方法。

它没有给出错误,我把a console.log('loaded userscript wifi-autologin'),console.log作品,但document.addEventListener的预期效果不会发生.在进行了一些调试之后,让它打印出调用了addEventListener,我发现它没有被调用.

脚本来源:

// ==UserScript==
// @name        wifi-autologin
// @namespace   lf-ns
// @description Hopefully autologins to a captive portal
// @include     *://1.1.1.1/*
// @version     1
// @run-at document-end
// ==/UserScript==

document.addEventListener('load', submitAction);

Yet Another .. 80

显然,document.addEventListener()是不可靠的,因此,我的错误.请改用window.addEventListener()相同的参数.



1> Yet Another ..:

显然,document.addEventListener()是不可靠的,因此,我的错误.请改用window.addEventListener()相同的参数.


你怎么得出结论`document.addEventListener('load',...)`是不可靠的?

2> ekim..:

问题是事件被添加 通过触发执行EXECUTED(document onload可以通过检查属性列表来验证属性修改).

何时执行和修改onload相对于onload事件触发器:

document.addEventListener('load', ... );

在加载和/或呈现页面的HTML之前,期间或之后?
这个简单的scURIple(剪切和粘贴到URL)"工作"没有alert天真的期望:

data:text/html;charset=utf-8,
    
          
          goodbye universe - hello muiltiverse
    

加载是否意味着脚本内容已被执行?

这个世界扩张的
一点点...... 考虑稍作修改:

data:text/html;charset=utf-8,
    
          
        goodbye universe - hello muiltiverse
    

以及HTML是否已加载.

渲染肯定是未决的,因为goodbye universe - hello muiltiverse在屏幕上看不到,但是,是否confirm( ... )必须已经加载才能执行?......等document.addEventListener('load', ... )......

换句话说,当代码本身尚未加载时,您是否可以执行代码来检查自加载?

或者,看着的情况下,如果代码是可执行文件,然后执行它的另一种方式ALREADY被加载木已成舟,并追溯检查时的过渡尚未加载和加载之间发生的是一个先验的既成事实.

首先是:加载和执行代码或使用代码的功能虽然没有加载?

onload作为一个window财产是有效的,因为它从属于对象,而不是像在document案件中那样自我指涉,即.它的window的内容,通过document,决定将加载的问题犯错的情况.

PS.:以下什么时候失败alert(...)?(亲身经历过的问题):

警告:除非加载到同一个窗口真的很快... clobbering是一天的顺序
所以在使用相同的命名窗口时下面真正需要的是:

window.open(URIstr1,"w") .
   addEventListener('load', 
      function(){ alert(42); 
         window.open(URIstr2,"w") .
            addEventListener('load', 
               function(){ alert(43); 
                  window.open(URIstr3,"w") .
                     addEventListener('load', 
                        function(){ alert(44); 
                 /*  ...  */
                        } )
               } )
      } ) 

或者,每个连续window.open进行:
alert("press Ok either after # alert shows pending load is done or inspired via divine intervention" );

data:text/html;charset=utf-8,
    

强调onload差异作为财产documentwindow财产.

另一个警告涉及保留XSS,跨站点脚本和SOP,同源策略规则,这些规则可能允许加载HTML URI但不修改其内容以检查相同内容.如果scURIple作为来自同一起源/站点的书签/ scriplet运行,那么可能会成功.

即.从任意页面,此链接将执行加载,但不太可能alert('done'):

     src. vu 

但如果链接被加入书签,然后在查看google.ca页面时单击,则会同时执行这两项操作.

测试环境:

 window.navigator.userAgent = 
   Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.4) Gecko/2008102920 Firefox/3.0.4 (Splashtop-v1.2.17.0)

推荐阅读
ifx0448363
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有