fix: wait until animation finish and dom show

This commit is contained in:
linonetwo 2023-09-16 05:13:40 +08:00
parent d8bdd09eb0
commit 0863916f9b
2 changed files with 16 additions and 7 deletions

View File

@ -37,9 +37,14 @@ BlockIdWidget.prototype.hookFocusElementEvent = function(event) {
if(!event.param) return event; if(!event.param) return event;
var id = event.param.replace('#',''); var id = event.param.replace('#','');
if(id !== this.id) return event; if(id !== this.id) return event;
var element = this.parentDomNode; var selector = event.param || "",
element,
baseElement = event.event && event.event.target ? event.event.target.ownerDocument : document;
element = $tw.utils.querySelectorSafe(selector,baseElement) || this.spanDomNode;
if(!element.parentNode) return;
element = element.parentNode;
// need to check if the block is before this node // need to check if the block is before this node
if(this.previousSibling) { if(this.previousSibling && element.previousSibling) {
element = element.previousSibling; element = element.previousSibling;
} }
element.focus({ focusVisible: true }); element.focus({ focusVisible: true });

View File

@ -168,11 +168,15 @@ LinkWidget.prototype.handleClickEvent = function(event) {
event: event event: event
}); });
if(this.toBlockId) { if(this.toBlockId) {
this.dispatchEvent({ var duration = $tw.utils.getAnimationDuration();
type: "tm-focus-selector", var self = this;
param: "#" + this.toBlockId, setTimeout(function() {
event: event, self.dispatchEvent({
}); type: "tm-focus-selector",
param: "#" + self.toBlockId,
event: event,
});
},duration);
} }
if(this.domNodes[0].hasAttribute("href")) { if(this.domNodes[0].hasAttribute("href")) {
event.preventDefault(); event.preventDefault();