核心问题
假设您有一个DOM元素e
,该元素与当前document
断开连接,即
document.compareDocumentPosition(e) & Node.DOCUMENT_POSITION_DISCONNECTED
是true
。
如何利用此节点连接(即下一个滴答声)的时刻触发的事件,即
document.compareDocumentPosition(e) & Node.DOCUMENT_POSITION_DISCONNECTED
开始返回false
吗?
上下文较高
我有一个角度分量,其ngAfterViewInit
将根据当前元素样式(实际尺寸,填充,边距等)计算一些值。
但是在创建了ngAfterViewInit
的后代之后,可以自由调用 this._ngZone.runOutsideAngular(() => {
new MutationObserver(mutations => {
console.log('got mutations', mutations);
mutations.forEach(mutation => {
mutation.addedNodes.forEach(node => {
if (node === this.element) {
console.log('GOT CONNECTED');
}
})
});
}).observe(document, { childList: true });
});
,但是不必与它的父级连接。与文档断开连接的元素基本上没有样式,因此每个尺寸-合理-零。
我想推迟此计算,直到该元素最终连接到整个文档,应用CSS规则,重排HTML / CSS并确定元素的样式为止。
MutationObserver失败
我试图通过这种方式使用MutationObserver:
MutationObserver
控制台中甚至没有出现第一个“突变”。也许我出了点问题。我是 protected void btnSubmit_Click(object sender, EventArgs e)
{
if (Page.IsValid)
{
using (ShopContext context = new ShopContext())
{
Purchase purchase = new Purchase();
purchase.FirstName = txtFirstName.Text;
purchase.LastName = txtLastName.Text; ;
purchase.Email = txtEmail.Text;
purchase.Newsletter = chkNewsletter.Checked;
purchase.Album = drpAlbum.SelectedValue;
context.Purchases.Add(purchase);
context.SaveChanges();
//Response.Redirect("view-purchases.aspx");
}
pnlForm.Visible = false;
pnlConfirm.Visible = true;
lblFirstName.Text = txtFirstName.Text;
lblLastName.Text = txtLastName.Text;
lblEmail.Text = txtEmail.Text;
if (chkNewsletter.Checked)
{
lblNewsletter.Text = "Registered";
}
else
{
lblNewsletter.Text = "Not Registered";
}
lblAlbum.Text = drpAlbum.SelectedValue;
}
}
}
的新手。