From 5a08c3dec478cab53246503a09a6f312e2f31e66 Mon Sep 17 00:00:00 2001 From: kuaifan Date: Mon, 13 Jun 2022 10:12:37 +0800 Subject: [PATCH] =?UTF-8?q?perf:=20=E4=BC=98=E5=8C=96excel=E8=8F=9C?= =?UTF-8?q?=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docker/office/resources/api/documents/api.js | 53 ++++++++++++------- .../pages/manage/components/FileContent.vue | 19 ++++--- 2 files changed, 45 insertions(+), 27 deletions(-) diff --git a/docker/office/resources/api/documents/api.js b/docker/office/resources/api/documents/api.js index 2bb822b97..7ef190843 100644 --- a/docker/office/resources/api/documents/api.js +++ b/docker/office/resources/api/documents/api.js @@ -11,27 +11,40 @@ window.localStorage.removeItem('ui-theme-id') } catch (e) {} // - window._toolbarClick = function(el, action) { - window.parent.postMessage({ - source: 'onlyoffice', - action: action, - rect: el.getBoundingClientRect() - }, "*"); - }; - window._toolbarInter = setInterval(function() { - if (typeof $ === "function") { - var toolbar = $("#toolbar"); - if (toolbar.find(".hedset").length > 0 && toolbar.find(".hedico").length === 0) { - var linkSvg = 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGNsYXNzPSJpb25pY29uIiB2aWV3Qm94PSIwIDAgNTEyIDUxMiI+PHRpdGxlPkxpbms8L3RpdGxlPjxwYXRoIGQ9Ik0yMDggMzUyaC02NGE5NiA5NiAwIDAxMC0xOTJoNjRNMzA0IDE2MGg2NGE5NiA5NiAwIDAxMCAxOTJoLTY0TTE2My4yOSAyNTZoMTg3LjQyIiBmaWxsPSJub25lIiBzdHJva2U9IiNmNWY1ZjUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgc3Ryb2tlLXdpZHRoPSIzNiIvPjwvc3ZnPg=='; - var historySvg = 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGNsYXNzPSJpb25pY29uIiB2aWV3Qm94PSIwIDAgNTEyIDUxMiI+PHRpdGxlPlRpbWVyPC90aXRsZT48cGF0aCBkPSJNMTEyLjkxIDEyOEExOTEuODUgMTkxLjg1IDAgMDA2NCAyNTRjLTEuMTggMTA2LjM1IDg1LjY1IDE5My44IDE5MiAxOTQgMTA2LjIuMiAxOTItODUuODMgMTkyLTE5MiAwLTEwNC41NC04My41NS0xODkuNjEtMTg3LjUtMTkyYTQuMzYgNC4zNiAwIDAwLTQuNSA0LjM3VjE1MiIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjZjVmNWY1IiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIHN0cm9rZS13aWR0aD0iMzIiLz48cGF0aCBkPSJNMjMzLjM4IDI3OC42M2wtNzktMTEzYTguMTMgOC4xMyAwIDAxMTEuMzItMTEuMzJsMTEzIDc5YTMyLjUgMzIuNSAwIDAxLTM3LjI1IDUzLjI2IDMzLjIxIDMzLjIxIDAgMDEtOC4wNy03Ljk0eiIgZmlsbD0iI0Y1RjVGNSIvPjwvc3ZnPg=='; - toolbar.find(".hedset").eq(0).before('
' + - '' + - '' + - '
') - clearInterval(window._toolbarInter); + if (window.parent) { + window._toolbarClick = function(el, action) { + window.parent.postMessage({ + source: 'onlyoffice', + action: action, + rect: el.getBoundingClientRect() + }, "*"); + }; + window._toolbarInter = setInterval(function() { + if (typeof $ === "function") { + var toolbar = $("#toolbar"); + if (toolbar.find(".hedset").length > 0) { + clearInterval(window._toolbarInter); + window.parent.postMessage({ + source: 'onlyoffice', + action: 'ready', + }, "*"); + } } - } - }, 1000); + }, 1000); + window.addEventListener('message', function(event) { + if (event.data === "createMenu") { + var toolbar = $("#toolbar"); + if (toolbar.find(".hedico").length === 0) { + var linkSvg = 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGNsYXNzPSJpb25pY29uIiB2aWV3Qm94PSIwIDAgNTEyIDUxMiI+PHRpdGxlPkxpbms8L3RpdGxlPjxwYXRoIGQ9Ik0yMDggMzUyaC02NGE5NiA5NiAwIDAxMC0xOTJoNjRNMzA0IDE2MGg2NGE5NiA5NiAwIDAxMCAxOTJoLTY0TTE2My4yOSAyNTZoMTg3LjQyIiBmaWxsPSJub25lIiBzdHJva2U9IiNmNWY1ZjUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgc3Ryb2tlLXdpZHRoPSIzNiIvPjwvc3ZnPg=='; + var historySvg = 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGNsYXNzPSJpb25pY29uIiB2aWV3Qm94PSIwIDAgNTEyIDUxMiI+PHRpdGxlPlRpbWVyPC90aXRsZT48cGF0aCBkPSJNMTEyLjkxIDEyOEExOTEuODUgMTkxLjg1IDAgMDA2NCAyNTRjLTEuMTggMTA2LjM1IDg1LjY1IDE5My44IDE5MiAxOTQgMTA2LjIuMiAxOTItODUuODMgMTkyLTE5MiAwLTEwNC41NC04My41NS0xODkuNjEtMTg3LjUtMTkyYTQuMzYgNC4zNiAwIDAwLTQuNSA0LjM3VjE1MiIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjZjVmNWY1IiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIHN0cm9rZS13aWR0aD0iMzIiLz48cGF0aCBkPSJNMjMzLjM4IDI3OC42M2wtNzktMTEzYTguMTMgOC4xMyAwIDAxMTEuMzItMTEuMzJsMTEzIDc5YTMyLjUgMzIuNSAwIDAxLTM3LjI1IDUzLjI2IDMzLjIxIDMzLjIxIDAgMDEtOC4wNy03Ljk0eiIgZmlsbD0iI0Y1RjVGNSIvPjwvc3ZnPg=='; + toolbar.find(".hedset").eq(0).before('
' + + '' + + '' + + '
') + } + } + }) + } })(window); ;(function(DocsAPI, window, document, undefined) { diff --git a/resources/assets/js/pages/manage/components/FileContent.vue b/resources/assets/js/pages/manage/components/FileContent.vue index a7762a350..13cdd2521 100644 --- a/resources/assets/js/pages/manage/components/FileContent.vue +++ b/resources/assets/js/pages/manage/components/FileContent.vue @@ -286,20 +286,25 @@ export default { }, methods: { - handleOfficeMessage({data}) { + handleOfficeMessage({data, source}) { if (data.source === 'onlyoffice') { switch (data.action) { + case 'ready': + source.postMessage("createMenu", "*"); + break; + case 'link': this.handleClick('link') break; case 'history': - if (this.$refs.officeHeader) { - this.$refs.officeHeader.style.top = `${data.rect.top}px`; - this.$refs.officeHeader.style.left = `${data.rect.left}px`; - this.$refs.officeHeader.style.width = `${data.rect.width}px`; - this.$refs.officeHeader.style.height = `${data.rect.height}px`; - this.$refs.officeHeader.click(); + const dom = this.$refs.officeHeader; + if (dom) { + dom.style.top = `${data.rect.top}px`; + dom.style.left = `${data.rect.left}px`; + dom.style.width = `${data.rect.width}px`; + dom.style.height = `${data.rect.height}px`; + dom.click(); } break; }