Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
qianlong66
uni-app
提交
19607018
U
uni-app
项目概览
qianlong66
/
uni-app
与 Fork 源项目一致
Fork自
DCloud / uni-app
通知
1
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
U
uni-app
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
19607018
编写于
7月 20, 2021
作者:
Q
qiang
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix: 优化 getNodesInfo 查找范围
上级
bcbde2c7
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
79 addition
and
11 deletion
+79
-11
packages/uni-app-plus/dist/uni-app-view.umd.js
packages/uni-app-plus/dist/uni-app-view.umd.js
+17
-3
packages/uni-h5/dist/uni-h5.es.js
packages/uni-h5/dist/uni-h5.es.js
+19
-5
packages/uni-h5/src/service/api/ui/requestComponentInfo.ts
packages/uni-h5/src/service/api/ui/requestComponentInfo.ts
+43
-3
未找到文件。
packages/uni-app-plus/dist/uni-app-view.umd.js
浏览文件 @
19607018
...
...
@@ -15471,25 +15471,39 @@
return window.__$__(component).$;
}
}
function matches(element, selectors) {
const matches2 = element.matches || element.matchesSelector || element.mozMatchesSelector || element.msMatchesSelector || element.oMatchesSelector || element.webkitMatchesSelector || function(selectors2) {
const matches3 = this.parentElement.querySelectorAll(selectors2);
let i = matches3.length;
while (--i >= 0 && matches3.item(i) !== this) {
}
return i > -1;
};
return matches2.call(element, selectors);
}
function getNodesInfo(pageVm2, component, selector, single, fields) {
const parentElement = findElm(component, pageVm2).parentElement;
const selfElement = findElm(component, pageVm2);
const parentElement = selfElement.parentElement;
if (!parentElement) {
return single ? null : [];
}
if (single) {
const node =
parent
Element.querySelector(selector);
const node =
selfElement.nodeType === 3 ? parentElement.querySelector(selector) : matches(selfElement, selector) ? selfElement : self
Element.querySelector(selector);
if (node) {
return getNodeInfo(node, fields);
}
return null;
} else {
let infos = [];
const nodeList =
parentElement
.querySelectorAll(selector);
const nodeList =
(selfElement.nodeType === 3 ? parentElement : selfElement)
.querySelectorAll(selector);
if (nodeList && nodeList.length) {
[].forEach.call(nodeList, (node) => {
infos.push(getNodeInfo(node, fields));
});
}
if (selfElement.nodeType !== 3 && matches(selfElement, selector)) {
infos.unshift(getNodeInfo(selfElement, fields));
}
return infos;
}
}
...
...
packages/uni-h5/dist/uni-h5.es.js
浏览文件 @
19607018
...
...
@@ -2072,25 +2072,39 @@ function findElm(component, pageVm) {
}
return component.$el;
}
function matches(element, selectors) {
const matches2 = element.matches || element.matchesSelector || element.mozMatchesSelector || element.msMatchesSelector || element.oMatchesSelector || element.webkitMatchesSelector || function(selectors2) {
const matches3 = this.parentElement.querySelectorAll(selectors2);
let i = matches3.length;
while (--i >= 0 && matches3.item(i) !== this) {
}
return i > -1;
};
return matches2.call(element, selectors);
}
function getNodesInfo(pageVm, component, selector, single, fields2) {
const parentElement = findElm(component, pageVm).parentElement;
const selfElement = findElm(component, pageVm);
const parentElement = selfElement.parentElement;
if (!parentElement) {
return single ? null : [];
}
if (single) {
const node =
parent
Element.querySelector(selector);
const node =
selfElement.nodeType === 3 ? parentElement.querySelector(selector) : matches(selfElement, selector) ? selfElement : self
Element.querySelector(selector);
if (node) {
return getNodeInfo(node, fields2);
}
return null;
} else {
let infos = [];
const nodeList =
parentElement
.querySelectorAll(selector);
const nodeList =
(selfElement.nodeType === 3 ? parentElement : selfElement)
.querySelectorAll(selector);
if (nodeList && nodeList.length) {
[].forEach.call(nodeList, (node) => {
infos.push(getNodeInfo(node, fields2));
});
}
if (selfElement.nodeType !== 3 && matches(selfElement, selector)) {
infos.unshift(getNodeInfo(selfElement, fields2));
}
return infos;
}
}
...
...
@@ -18547,10 +18561,10 @@ function useState() {
const minWidth = matchMedia.minWidth;
topWindowMinWidth = checkMinWidth(minWidth) ? minWidth : topWindowMinWidth;
}
const matches = initMediaQuery(topWindowMinWidth, (ev) => {
const matches
2
= initMediaQuery(topWindowMinWidth, (ev) => {
layoutState[`${prop}MediaQuery`] = ev.matches;
});
layoutState[`${prop}MediaQuery`] = matches;
layoutState[`${prop}MediaQuery`] = matches
2
;
});
watch(() => layoutState.topWindowHeight, (value) => updateCssVar({
"--top-window-height": value + "px"
...
...
packages/uni-h5/src/service/api/ui/requestComponentInfo.ts
浏览文件 @
19607018
...
...
@@ -110,6 +110,34 @@ export function findElm(
return
component
.
$el
}
function
matches
(
element
:
HTMLElement
,
selectors
:
string
)
{
type
Matches
=
typeof
element
.
matches
interface
HTMLElementExt
extends
HTMLElement
{
matchesSelector
?:
Matches
mozMatchesSelector
?:
Matches
msMatchesSelector
?:
Matches
oMatchesSelector
?:
Matches
}
const
matches
=
element
.
matches
||
(
element
as
HTMLElementExt
).
matchesSelector
||
(
element
as
HTMLElementExt
).
mozMatchesSelector
||
(
element
as
HTMLElementExt
).
msMatchesSelector
||
(
element
as
HTMLElementExt
).
oMatchesSelector
||
element
.
webkitMatchesSelector
||
function
(
this
:
HTMLElement
,
selectors
:
string
)
{
const
matches
=
(
this
.
parentElement
as
HTMLElement
).
querySelectorAll
(
selectors
)
let
i
=
matches
.
length
while
(
--
i
>=
0
&&
matches
.
item
(
i
)
!==
this
)
{}
return
i
>
-
1
}
return
matches
.
call
(
element
,
selectors
)
}
function
getNodesInfo
(
pageVm
:
ComponentPublicInstance
,
component
:
ComponentPublicInstance
|
undefined
|
null
,
...
...
@@ -117,24 +145,36 @@ function getNodesInfo(
single
:
boolean
,
fields
:
NodeField
):
SelectorQueryNodeInfo
|
SelectorQueryNodeInfo
[]
|
null
{
const
parentElement
=
findElm
(
component
,
pageVm
).
parentElement
const
selfElement
=
findElm
(
component
,
pageVm
)
const
parentElement
=
selfElement
.
parentElement
if
(
!
parentElement
)
{
return
single
?
null
:
[]
}
// 使用片段时从父元素查找,会超出当前组件范围
if
(
single
)
{
const
node
=
parentElement
.
querySelector
(
selector
)
as
HTMLElement
const
node
=
selfElement
.
nodeType
===
3
?
(
parentElement
.
querySelector
(
selector
)
as
HTMLElement
)
:
matches
(
selfElement
,
selector
)
?
selfElement
:
(
selfElement
.
querySelector
(
selector
)
as
HTMLElement
)
if
(
node
)
{
return
getNodeInfo
(
node
,
fields
)
}
return
null
}
else
{
let
infos
:
SelectorQueryNodeInfo
[]
=
[]
const
nodeList
=
parentElement
.
querySelectorAll
(
selector
)
const
nodeList
=
(
selfElement
.
nodeType
===
3
?
parentElement
:
selfElement
).
querySelectorAll
(
selector
)
if
(
nodeList
&&
nodeList
.
length
)
{
;[].
forEach
.
call
(
nodeList
,
(
node
)
=>
{
infos
.
push
(
getNodeInfo
(
node
,
fields
))
})
}
if
(
selfElement
.
nodeType
!==
3
&&
matches
(
selfElement
,
selector
))
{
infos
.
unshift
(
getNodeInfo
(
selfElement
,
fields
))
}
return
infos
}
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录