在链滴看到这个帖子的回答,所以十分好奇可以通过添加 JS 代码片段的方式实现通过鼠标中键点击文档(父文档)时展开文档吗?
可以的话有会的兄弟可以帮我写一个吗,我不会写代码,也没有啥好拿得出手的,只能奉上 2000 积分求助了大家了!
不想打开链接的兄弟可以直接看图:
在链滴看到这个帖子的回答,所以十分好奇可以通过添加 JS 代码片段的方式实现通过鼠标中键点击文档(父文档)时展开文档吗?
可以的话有会的兄弟可以帮我写一个吗,我不会写代码,也没有啥好拿得出手的,只能奉上 2000 积分求助了大家了!
不想打开链接的兄弟可以直接看图:
// 中键点击展开:基于 https://ld246.com/article/1682476267736/comment/1682479365610?r=Undii#comments
let g_reset = setInterval(main, 2000);
function main() {
if (document.querySelector('.sy__file')) {
clearInterval(g_reset);
}else{
return false;
}
document.querySelector('.sy__file').addEventListener('mousedown', event => {
if (event.button != 1) return;
event.preventDefault();
if (!event.target.classList.contains('b3-list-item__text')) return;
if (event.target.parentNode.getAttribute("data-type") !== "navigation-file") return;
const b3ListItemToggle = event.target.parentNode.querySelector('.b3-list-item__toggle');
if (b3ListItemToggle.classList.contains('fn__hidden')) return;
b3ListItemToggle.click();
});
}
第三版:与第二版差不多【扩大响应范围(中键点左边的空白、:和 + 都会响应,但可能有副作用)】。应该能适合更多用户的情况。
// 中键点击展开3:基于https://ld246.com/article/1682476267736
(function(){
let g_reset = setInterval(main, 2000);
function main() {
if (document.querySelector('.sy__file')) {
clearInterval(g_reset);
}else{
return false;
}
document.querySelector('.sy__file').addEventListener('mousedown', event => {
if (event.button != 1) return;
let notTitleFlag = false;
if (!event.target.classList.contains('b3-list-item__text')) notTitleFlag = true;
let target = event.target.parentNode;
let temp = event.target;
//console.log("0426",event);
for (let i = 0; i < 4 && temp; i++) {
if (temp?.getAttribute("data-type") == "navigation-file"
|| temp?.getAttribute("data-type") == "navigation-root") {
target = temp;
break;
}
temp = temp?.parentNode;
}
//console.log("0426target", target);
if (target?.getAttribute("data-type") == "navigation-file"
|| target?.getAttribute("data-type") == "navigation-root") {
const b3ListItemToggle = target.querySelector('.b3-list-item__toggle');
const title = target.querySelector('.b3-list-item__text');
if (b3ListItemToggle.classList.contains('fn__hidden')) return;
event.preventDefault();
b3ListItemToggle.click();
if (event.ctrlKey) {
title.click();
}
}
}, true);
}
})();
// 中键点击展开:基于 https://ld246.com/article/1682476267736/comment/1682479365610?r=Undii#comments
let g_reset = setInterval(main, 2000);
function main() {
if (document.querySelector('.sy__file')) {
clearInterval(g_reset);
}else{
return false;
}
document.querySelector('.sy__file').addEventListener('mousedown', event => {
if (event.button != 1) return;
event.preventDefault();
if (!event.target.classList.contains('b3-list-item__text')) return;
if (event.target.parentNode.getAttribute("data-type") !== "navigation-file") return;
const b3ListItemToggle = event.target.parentNode.querySelector('.b3-list-item__toggle');
if (b3ListItemToggle.classList.contains('fn__hidden')) return;
b3ListItemToggle.click();
});
}
第三版:与第二版差不多【扩大响应范围(中键点左边的空白、:和 + 都会响应,但可能有副作用)】。应该能适合更多用户的情况。
// 中键点击展开3:基于https://ld246.com/article/1682476267736
(function(){
let g_reset = setInterval(main, 2000);
function main() {
if (document.querySelector('.sy__file')) {
clearInterval(g_reset);
}else{
return false;
}
document.querySelector('.sy__file').addEventListener('mousedown', event => {
if (event.button != 1) return;
let notTitleFlag = false;
if (!event.target.classList.contains('b3-list-item__text')) notTitleFlag = true;
let target = event.target.parentNode;
let temp = event.target;
//console.log("0426",event);
for (let i = 0; i < 4 && temp; i++) {
if (temp?.getAttribute("data-type") == "navigation-file"
|| temp?.getAttribute("data-type") == "navigation-root") {
target = temp;
break;
}
temp = temp?.parentNode;
}
//console.log("0426target", target);
if (target?.getAttribute("data-type") == "navigation-file"
|| target?.getAttribute("data-type") == "navigation-root") {
const b3ListItemToggle = target.querySelector('.b3-list-item__toggle');
const title = target.querySelector('.b3-list-item__text');
if (b3ListItemToggle.classList.contains('fn__hidden')) return;
event.preventDefault();
b3ListItemToggle.click();
if (event.ctrlKey) {
title.click();
}
}
}, true);
}
})();
感谢录屏演示!这个像是没有捕捉到中键点下的事件。(PS.正常的话,这个代码片段应该会输出两条消息)
方便的话,麻烦再试最后一次,(这个版本使用事件捕捉。还不行的话大概我就无能为力了):
// 中键点击展开3:基于https://ld246.com/article/1682476267736
(function(){
let g_reset = setInterval(main, 2000);
function main() {
if (document.querySelector('.sy__file')) {
clearInterval(g_reset);
}else{
return false;
}
document.querySelector('.sy__file').addEventListener('mousedown', event => {
if (event.button != 1) return;
let notTitleFlag = false;
if (!event.target.classList.contains('b3-list-item__text')) notTitleFlag = true;
let target = event.target.parentNode;
let temp = event.target;
console.log("0426",event);
for (let i = 0; i < 4 && temp; i++) {
if (temp?.getAttribute("data-type") == "navigation-file"
|| temp?.getAttribute("data-type") == "navigation-root") {
target = temp;
break;
}
temp = temp?.parentNode;
}
console.log("0426target", target);
if (target?.getAttribute("data-type") == "navigation-file"
|| target?.getAttribute("data-type") == "navigation-root") {
const b3ListItemToggle = target.querySelector('.b3-list-item__toggle');
const title = target.querySelector('.b3-list-item__text');
if (b3ListItemToggle.classList.contains('fn__hidden')) return;
event.preventDefault();
b3ListItemToggle.click();
if (event.ctrlKey) {
title.click();
}
}
}, true);
}
})();
群里热心的 HBuilderX-Light-主题作者稻草屋老铁写了个片段,老铁你可以试试,由于我不怎么经常上链滴没找到他链滴 ID…如果在你那里有用的话也不用给我积分了,给他的主题点个 star 吧
(() => {
setInterval(() => {
var listtexts = document.querySelectorAll('.sy__file .b3-list-item--hide-action');
for (let index = 0; index < listtexts.length; index++) {
listtexts[index].removeEventListener("mousedown", e);
listtexts[index].addEventListener("mousedown", e)
}
}, 200)
function e(e) {
if (e.button != 1) return;
try {
e.target.previousElementSibling.previousElementSibling.click();
} catch (error) { }
}
})();
你看一下,鼠标点击是用鼠标中键点的,无法展开。
gzip (GNU zip)是 GNU 自由软件的文件压缩程序。我们在 Linux 中经常会用到后缀为 .gz 的文件,它们就是 Gzip 格式的。现今已经成为互联网上使用非常普遍的一种数据压缩格式,或者说一种文件格式。
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的操作系统上。容器完全使用沙箱机制,几乎没有性能开销,可以很容易地在机器和数据中心中运行。
Latke 是一款以 JSON 为主的 Java Web 框架。
Vim 是类 UNIX 系统文本编辑器 Vi 的加强版本,加入了更多特性来帮助编辑源代码。Vim 的部分增强功能包括文件比较(vimdiff)、语法高亮、全面的帮助系统、本地脚本(Vimscript)和便于选择的可视化模式。
昆明尊园房地产经纪有限公司,即:Kunming Zunyuan Property Agency Company Limited(简称“尊园地产”)于 2007 年 6 月开始筹备,2007 年 8 月 18 日正式成立,注册资本 200 万元,公司性质为股份经纪有限公司,主营业务为:代租、代售、代办产权过户、办理银行按揭、担保、抵押、评估等。
本标签主要用于分享网络空间安全专业的学习笔记
程序员是从事程序开发、程序维护的专业人员。
Pipe 是一款小而美的开源博客平台。Pipe 有着非常活跃的社区,可将文章作为帖子推送到社区,来自社区的回帖将作为博客评论进行联动(具体细节请浏览 B3log 构思 - 分布式社区网络)。
这是一种全新的网络社区体验,让热爱记录和分享的你不再感到孤单!
Lute 是一款结构化的 Markdown 引擎,支持 Go 和 JavaScript。
你若安好,便是晴天。
你创造的作品可能会帮助到很多人,如果是开源项目的话就更赞了!
WebSocket 是 HTML5 中定义的一种新协议,它实现了浏览器与服务器之间的全双工通信(full-duplex)。
以太坊(Ethereum)并不是一个机构,而是一款能够在区块链上实现智能合约、开源的底层系统。以太坊是一个平台和一种编程语言 Solidity,使开发人员能够建立和发布下一代去中心化应用。 以太坊可以用来编程、分散、担保和交易任何事物:投票、域名、金融交易所、众筹、公司管理、合同和知识产权等等。
深圳市大疆创新科技有限公司(DJI-Innovations,简称 DJI),成立于 2006 年,是全球领先的无人飞行器控制系统及无人机解决方案的研发和生产商,客户遍布全球 100 多个国家。通过持续的创新,大疆致力于为无人机工业、行业用户以及专业航拍应用提供性能最强、体验最佳的革命性智能飞控产品和解决方案。
ZooKeeper 是一个分布式的,开放源码的分布式应用程序协调服务,是 Google 的 Chubby 一个开源的实现,是 Hadoop 和 HBase 的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。
OkHttp 是一款 HTTP & HTTP/2 客户端库,专为 Android 和 Java 应用打造。
深度学习(Deep Learning)是机器学习的分支,是一种试图使用包含复杂结构或由多重非线性变换构成的多个处理层对数据进行高层抽象的算法。
Java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由 Sun Microsystems 公司于 1995 年 5 月推出的。Java 技术具有卓越的通用性、高效性、平台移植性和安全性。
Go 语言是 Google 推出的一种全新的编程语言,可以在不损失应用程序性能的情况下降低代码的复杂性。谷歌首席软件工程师罗布派克(Rob Pike)说:我们之所以开发 Go,是因为过去 10 多年间软件开发的难度令人沮丧。Go 是谷歌 2009 发布的第二款编程语言。
jsDelivr 是一个开源的 CDN 服务,可为 npm 包、GitHub 仓库提供免费、快速并且可靠的全球 CDN 加速服务。
Hadoop 是由 Apache 基金会所开发的一个分布式系统基础架构。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。
钉钉,专为中国企业打造的免费沟通协同多端平台, 阿里巴巴出品。
GraphQL 是一个用于 API 的查询语言,是一个使用基于类型系统来执行查询的服务端运行时(类型系统由你的数据定义)。GraphQL 并没有和任何特定数据库或者存储引擎绑定,而是依靠你现有的代码和数据支撑。
uTools 是一个极简、插件化、跨平台的现代桌面软件。通过自由选配丰富的插件,打造你得心应手的工具集合。
Vditor 是一款浏览器端的 Markdown 编辑器,支持所见即所得、即时渲染(类似 Typora)和分屏预览模式。它使用 TypeScript 实现,支持原生 JavaScript、Vue、React 和 Angular。