0
以下工作正常。我点击#testlink,它会触发。jQuery dispatchEvent不会在DOM负载上触发
jQuery(document).ready(function() {
jQuery("#testlink").on("click", function(event) {
document.dispatchEvent(new CustomEvent('funcTest', {
'detail': {
test: 'stuff'
}
}));
});
});
现在我想做同样的事情,没有on.click,我希望它在网页加载时触发。所以删除onclick。
jQuery(document).ready(function() {
document.dispatchEvent(new CustomEvent('funcTest', {
'detail': {
test: 'stuff'
}
}));
});
但它不起作用。什么都没发生。为什么?如何在页面加载时触发它?
该代码应该工作:https://jsfiddle.net/a87umsjh/是否在'dispatchEvent'调用之前分配了'funcTest'的事件处理程序? – Andreas
是的,我认为这就是发生的事情。 funcTest实际上是一个content.js,它是Chrome扩展的一部分。它在不同的沙箱中。所以它必须被分配得太晚?我将如何解决这个问题?我会尝试一个我认为很愚蠢的setTimeout。 –
雅,它与setTimeout一起工作。即使超时时间像2或10那样超级低,但只要我将超时注释掉,它就不会再触发了。我认为setTimeout是丑陋的。必须有更好的方法来调用funcTest而不必等待。 –