获取当前文档对象

获取当前文档对象

获取当前文档对象

// pc
siyuan.layout.centerLayout.children.map(item=>item.children.find(item=>item.headElement?.classList.contains('item--focus') && (item.panelElement.closest('.layout__wnd--active')||item.panelElement.closest('[data-type="wnd"]')))).find(item=>item)

获取当前文档的protyle

function getProtyle() {
    try {
        if(document.getElementById("sidebar")) return siyuan.mobile.editor.protyle;
        const currDoc = siyuan?.layout?.centerLayout?.children.map(item=>item.children.find(item=>item.headElement?.classList.contains('item--focus') && (item.panelElement.closest('.layout__wnd--active')||item.panelElement.closest('[data-type="wnd"]')))).find(item=>item);
        return currDoc?.model.editor.protyle;
    } catch(e) {
        console.error(e);
        return null;
    }
}

获取当前文档元素

document.querySelector('[data-type="wnd"].layout__wnd--active .protyle:not(.fn__none)')||document.querySelector('[data-type="wnd"] .protyle:not(.fn__none)');

//或

getProtyle().wysiwyg.element;

获取当前元素文档id

getProtyle()?.element?.querySelector('.protyle-title')?.dataset?.nodeId;

//或

(document.querySelector('[data-type="wnd"].layout__wnd--active .protyle:not(.fn__none)')||document.querySelector('[data-type="wnd"] .protyle:not(.fn__none)'))?.querySelector('.protyle-title')?.dataset?.nodeId;

获取当前文档编辑器元素

document.querySelector('[data-type="wnd"].layout__wnd--active .protyle:not(.fn__none) .protyle-wysiwyg.protyle-wysiwyg--attr')

注意: 这种方法不适合分屏情况,这种情况可参考 js获取鼠标所在元素

通过当前protyle data-id和tab data-id获取 protyle对象实例

function getInstanceById(id, layout = window.siyuan.layout.centerLayout) {
    const _getInstanceById = (item, id) => {
        if (item.id === id) {
            return item;
        }
        if (!item.children) {
            return;
        }
        let ret;
        for (let i = 0; i < item.children.length; i++) {
            ret = _getInstanceById(item.children[i], id);
            if (ret) {
                return ret;
            }
        }
    };
    return _getInstanceById(layout, id);
}

使用示例:

getInstanceById('d428018f-82e8-4f7a-9c06-c3d192517b2d')

获取当前tab

document.querySelector('[data-type="wnd"].layout__wnd--active .layout-tab-bar li.item--focus')||document.querySelector('[data-type="wnd"] .layout-tab-bar li.item--focus');

image.png

留下你的脚步
推荐阅读