1

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

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

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

4

2 回答 2

1

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 方便的花花公子就绪函数简写中:

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

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

于 2012-08-16T17:38:05.533 回答
0

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

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

$(window).load(do_this_on_load);

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

do_this_on_load();

看看它在页面上做了什么。

于 2012-08-16T17:46:31.267 回答