如何知道给定元素何时已连接到DOM

时间:2019-06-06 21:53:44

标签: javascript angular dom dom-events

核心问题

假设您有一个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; } } } 的新手。

0 个答案:

没有答案