繁体   English   中英

通过浏览器的控制台向页面添加JavaScript时,如何模拟加载时触发的事件?

[英]How can one simulate events triggered on load when adding javascript to a page through the browser's console?

我目前正在研究要放置在第三方网站上的脚本...为了对其进行测试,我正在打开第三方网站并在浏览器控制台(Chrome)中运行脚本。 我需要在window.load()上执行一些代码,但是这种测试方法无法执行该代码。 我假设这是因为加载事件发生后绑定了绑定到窗口的代码,因此永远不会被触发。 我的问题分为两部分:

  1. 实际上是因为在触发load事件之后添加window.load而不触发它的原因吗? 还是这是错误的,并且其他地方可能有问题?

  2. 像这样通过控制台添加javascript时,如何最好地模拟加载时触发的事件?

if(document.readyState === "complete"){将检测加载是否已经完成。

您可以轻松地使用else,然后在尚未完成加载的情况下放入load事件处理程序。 类似于以下内容:

if(document.readyState === "complete"){
  // do stuff
}else{
  // attach load handler
}

我想做的是定义一个pageLoaded类型的函数,该函数可以在以后的代码中运行,这样,如果页面已被加载,我可以立即调用它,或者在页面加载发生时让加载处理程序调用它。 就像是:

var pageLoaded = function(){alert("Page is ready!");}
if(document.readyState === "complete"){
  pageLoaded()
}else{
  // attach load handler, calls pageLoaded()
}

当然,由于您将问题标记为jQuery,因此始终可以将所有代码包装在jQuery方便的dandy ready函数速记中:

$(function(){
  // do stuff
});

这会将您的匿名函数传递给jQuery,如果与上述普通javascript不同,它将执行非常相似的操作。

在函数中定义事件,然后从控制台调用该函数。

function do_this_on_load() { alert("Loaded!") }

$(window).load(do_this_on_load);

然后您可以从控制台运行:

do_this_on_load();

看看它在页面上做什么。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM