|
@@ -256,6 +256,44 @@ var utils = {
|
|
|
|
|
|
return true;
|
|
|
},
|
|
|
+ /**
|
|
|
+ * 应用场景:1.翻页后页面滚动到列表第一条的位置
|
|
|
+ * @param targetEvent 页面要滚动到的目标元素
|
|
|
+ */
|
|
|
+ scrollTargetView (targetEvent, custom) {
|
|
|
+ if (!targetEvent) return
|
|
|
+ let scrollWrapper
|
|
|
+ let targetTop
|
|
|
+ const inWorkSpace = location.href.indexOf('work-bench') > -1
|
|
|
+ if (inWorkSpace) {
|
|
|
+ // 工作桌面内(qiankun、iframe)
|
|
|
+ const offsetHeight = document.querySelector('.el-header')?.offsetHeight
|
|
|
+ const inApp = window.__POWERED_BY_QIANKUN__
|
|
|
+ if (inApp) {
|
|
|
+ // qiankun
|
|
|
+ const appNode = document.querySelector('#app-container > div').shadowRoot
|
|
|
+ targetTop = appNode?.querySelector(targetEvent)?.offsetTop
|
|
|
+ scrollWrapper = document.querySelector('.el-main')
|
|
|
+ scrollWrapper.scrollTop = targetTop - offsetHeight
|
|
|
+ } else {
|
|
|
+ // iframe
|
|
|
+ const iframeNode = document.querySelector('#work-bench-container iframe')?.contentDocument
|
|
|
+ targetTop = iframeNode.querySelector(targetEvent)?.offsetTop
|
|
|
+ scrollWrapper = iframeNode.body
|
|
|
+ }
|
|
|
+ // console.log(`工作桌面内${inApp ? 'qiankun' : 'iframe'}---滚动元素:${scrollWrapper.className}, 滚动距离:${targetTop}`)
|
|
|
+ scrollWrapper.scrollTop = targetTop - offsetHeight
|
|
|
+ } else {
|
|
|
+ // 非工作桌面
|
|
|
+ targetTop = document.querySelector(targetEvent)?.offsetTop
|
|
|
+ // 因浏览器及模式差异,页面滚动元素存在不同(标准模式:document.documentElement;兼容模式:body)
|
|
|
+ // scrollingElement可获取页面滚动元素
|
|
|
+ console.info(targetTop, 'targetTop');
|
|
|
+ scrollWrapper = document.scrollingElement
|
|
|
+ scrollWrapper.scrollTop = targetTop + custom
|
|
|
+ // console.log(`非工作桌面---滚动元素:${scrollWrapper.className ? scrollWrapper.className : scrollWrapper.tagName}, 滚动距离:${targetTop}`)
|
|
|
+ }
|
|
|
+ },
|
|
|
// 判断变量是否是数组
|
|
|
isArray: function (o){
|
|
|
return Object.prototype.toString.call(o) == '[object Array]';
|