上一主题 下一主题
ScriptCat,新一代的脚本管理器脚本站,与全世界分享你的用户脚本油猴脚本开发指南教程目录
返回列表 发新帖

飞书文档的全选js函数

[复制链接]

该用户从未签到

1

主题

8

回帖

9

积分

助理工程师

积分
9
发表于 2024-7-23 15:19:26 | 显示全部楼层 | 阅读模式

在飞书文档中,按钮control+a,会把文档内容全选,我想用js在页面插入一个按钮,点击按钮来完成这个动作,找到了部分代码,但不知道该怎么改写调用。哪位师兄帮忙指导一下。
文档地址https://langgptai.feishu.cn/wiki/RXdbwRyASiShtDky381ciwFEnpe?hideSider=1&hideHeader=1
部分代码如下
`//selectAll(e) 这里传入的e是个对象{source: 'KeyboardSelectAll'}。
selectAll(e) {
let {rootBlockId: n} = this.blockManager;
if ((0,
b.UN)()) {
const e = (0,
b.tO)(this.blockManager);
if (!e)
return;
n = e.id
}
const {children: o} = this.blockManager.getBlockModelByBlockId(n)
, r = (0,
T.mQ)(o.map((e=>e.id)), this.blockManager);
this.setSelection(r, e)
}
setSelection(e) {
let n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {
source: R.F.ExternalInvoke,
syncBrowser: !0,
force: !1
};
const {syncBrowser: o=!0, force: r=!1, shouldNotify: i=!0} = n;
let s = (0,
l.default)(e);
s = this.mainSelectionType.filterUnValidSelect(s, this.blockManager),
this.extendSelectionTypes.forEach((e=>{
s = e.filterUnValidSelect(s)
}
));
const c = this.getSelection();
if ((0,
d.default)(s, c))
return void (r && this.updateBrowserSelection());
if (!s.length)
return this.clearExtendInternalSelection(c),
this.store.transaction((()=>{
this.setContext(s, n),
this.store.stored = []
}
), o, i),
void (o && this.updateBrowserSelection());
const a = this.store.isBlockSelection(s);
this.mainSelectionType.onBeforeSet(s),
this.extendSelectionTypes.forEach((e=>{
e.onBeforeSet(s)
}
));
const f = [];
a || f.push(s[0].id),
this.clearExtendInternalSelection(c, f),
this.store.transaction((()=>{
this.setContext(s, n),
this.store.stored = s;
const e = (0,
u.Z)(s.map((e=>e.type)));
if (this.extendSelectionTypes.some((n=>{
const o = n.type === e[0];
return o && n.addCurrent(s[0]),
o
}
)),
n.source !== R.F.Destroy && a) {
const e = [R.F.Backspace, R.F.Redo, R.F.Undo, R.F.EditControl];
h.ZP.isMobile && e.includes(n.source) && this.setHiddenInputDomReadOnly(!1),
this.setFocusInHiddenInputDom(!0),
h.ZP.isIOS && this.setHiddenInputDomReadOnly(!0)
}
}
), o, i),
n.source !== R.F.Redo && n.source !== R.F.Undo || (0,
g.K)((()=>{
(0,
p.wC)({
actionObject: a ? .Xu.BLOCK : .Xu.TEXT,
source: p.PO.content_page,
blockManager: this.blockManager,
actionType: p.uH[n.source.toLowerCase()],
blocks: s,
click: p.uD.hotkey_action
})
}
))
}
e.prototype.getBlockModelByBlockId = function(e) {
return this._blockIdToBlockModel.get(e)
}

`

  • TA的每日心情
    擦汗
    2024-7-16 09:20
  • 签到天数: 192 天

    [LV.7]常住居民III

    694

    主题

    5614

    回帖

    6500

    积分

    管理员

    非物质文化遗产社会摇传承人

    积分
    6500

    荣誉开发者管理员油中2周年生态建设者喜迎中秋

    发表于 2024-7-23 23:26:59 | 显示全部楼层
    哥哥不如换个思路
    Selector他也是用的dom元素
    我们为什么一定要调用官方的

    干脆直接调用网页的select全选api函数可能也可以实现?
    混的人。
    ------------------------------------------
    進撃!永遠の帝国の破壊虎---李恒道

    入驻了爱发电https://afdian.net/a/lihengdao666
    个人宣言:この世界で私に胜てる人とコードはまだ生まれていません。死ぬのが怖くなければ来てください。
    回复

    使用道具 举报

    该用户从未签到

    1

    主题

    8

    回帖

    9

    积分

    助理工程师

    积分
    9
    发表于 2024-7-24 10:10:46 | 显示全部楼层
    好的,我去试试,感谢哥哥
    回复

    使用道具 举报

    该用户从未签到

    1

    主题

    8

    回帖

    9

    积分

    助理工程师

    积分
    9
    发表于 2024-7-24 10:11:27 | 显示全部楼层
    李恒道 发表于 2024-7-23 23:26
    哥哥不如换个思路
    Selector他也是用的dom元素
    我们为什么一定要调用官方的

    好的,我去试试,感谢哥哥
    回复

    使用道具 举报

    发表回复

    本版积分规则

    快速回复 返回顶部 返回列表