没有找到合适的产品?
联系客服协助选型:023-68661681
提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
翻译|行业资讯|编辑:胡涛|2024-07-30 15:40:16.127|阅读 65 次
概述:本文主要介绍,Text Control 控件教程:使用 MutationObserver 观密报告预览选项卡何时处于活动状态,欢迎查阅
# 界面/图表报表/文档/IDE等千款热门软控件火热销售中 >>
TX Text Control 是一款功能类似于 MS Word 的文字处理控件,包括文档创建、编辑、打印、邮件合并、格式转换、拆分合并、导入导出、批量生成等功能。广泛应用于企业文档管理,网站内容发布,电子病历中病案模板创建、病历书写、修改历史、连续打印、病案归档等功能的实现。
考虑以下情况:您的应用程序中有一个外部“保存”按钮,用于保存文档编辑器中的当前文档。此按钮应仅在文档处于“编辑”模式而非“预览”模式时启用,以允许用户保存内容。预览模式是一种在您设计模板时用数据填充插入的合并字段以预览文档的模式。
当文档处于预览模式时,“保存”按钮应该被禁用,如下面的屏幕截图所示:
实现此目的的一种方法是使用MutationObserver API。该MutationObserver接口提供了监视 DOM 树所做更改的功能。当检测到更改时,观察者将调用指定的回调函数。这对于检测 JavaScript 对 DOM 所做的更改非常有用,例如当文档模式从预览更改为编辑时。
在ribbonTabsLoaded事件处理程序中,您可以创建一个新MutationObserver实例并观察ribbonGroupMailMergePreview元素的变化。当ribbonGroupMailMergePreview元素可见时(即文档处于预览模式),您可以禁用“保存”按钮。当ribbonGroupMailMergePreview元素不可见时(即文档处于编辑模式),您可以启用“保存”按钮。
// Create an observer instance linked to the callback function const observer = new MutationObserver(callback); TXTextControl.addEventListener("ribbonTabsLoaded", function () { targetNode = document.getElementById('ribbonGroupMailMergePreview'); // Start observing the target node for configured mutations if (targetNode) { observer.observe(targetNode, config); // Initial check console.log(`Initial visibility of #ribbonGroupMailMergePreview: ${checkVisibility(targetNode)}`); } else { console.error('Element #ribbonGroupMailMergePreview not found'); } });
每当检测到元素发生变化时,就会调用回调函数ribbonGroupMailMergePreview。该函数将检查ribbonGroupMailMergePreview元素是否可见,并相应地启用或禁用“保存”按钮。
// Function to check visibility function checkVisibility(element) { const style = window.getComputedStyle(element); return style && style.display !== 'none' && style.visibility !== 'hidden'; } // Callback function to execute when mutations are observed const callback = function(mutationsList, observer) { for (let mutation of mutationsList) { if (mutation.type === 'attributes' || mutation.type === 'childList') { // Check visibility whenever an attribute or child list changes const isVisible = checkVisibility(targetNode); if (isVisible) { document.getElementById('saveBtn').disabled = true; } else { document.getElementById('saveBtn').disabled = false; } } } };
此示例的完整 kbd 在此处:
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>TX Text Control Document Editor from JS</title> <script src="//backend.textcontrol.com/api/TXWebSocket/GetResource?name=tx-document-editor.min.js"> </script> <style> body { font-family: Verdana, Geneva, Tahoma, sans-serif; } button { margin-top: 20px; } #txDocumentEditor { height: 600px; width: 800px; } </style> </head> <body> <div id="txDocumentEditor"></div> <button id="saveBtn" onclick="save()">Save Document</button> <script> var targetNode = null; TXTextControl.init({ containerID: "txDocumentEditor", webSocketURL: "wss://backend.textcontrol.com/api/TXWebSocket?access-token=" }); var customerJson = [{ "name": "John Doe", "address": "1234 Elm Street", "city": "Austin", "state": "TX", "zip": "78701" }]; TXTextControl.addEventListener("ribbonTabsLoaded", function () { targetNode = document.getElementById('ribbonGroupMailMergePreview'); // Start observing the target node for configured mutations if (targetNode) { observer.observe(targetNode, config); // Initial check console.log(`Initial visibility of #ribbonGroupMailMergePreview: ${checkVisibility(targetNode)}`); } else { console.error('Element #ribbonGroupMailMergePreview not found'); } }); TXTextControl.addEventListener("textControlLoaded", function () { TXTextControl.loadJsonData(JSON.stringify(customerJson)); }); function save() { TXTextControl.saveDocument(TXTextControl.StreamType.HTMLFormat, function (data) { console.log(data); }); } // Function to check visibility function checkVisibility(element) { const style = window.getComputedStyle(element); return style && style.display !== 'none' && style.visibility !== 'hidden'; } // Callback function to execute when mutations are observed const callback = function(mutationsList, observer) { for (let mutation of mutationsList) { if (mutation.type === 'attributes' || mutation.type === 'childList') { // Check visibility whenever an attribute or child list changes const isVisible = checkVisibility(targetNode); if (isVisible) { document.getElementById('saveBtn').disabled = true; } else { document.getElementById('saveBtn').disabled = false; } } } }; // Create an observer instance linked to the callback function const observer = new MutationObserver(callback); // Options for the observer (which mutations to observe) const config = { attributes: true, childList: true, subtree: true }; </script> </body> </html>
该MutationObserverAPI 是用于检测 DOM 树更改的强大工具。在此示例中,我们使用了根据特定元素的MutationObserver可见性启用或禁用“保存”按钮。此技术可应用于需要响应 DOM 更改的各种场景。
欢迎下载|体验更多TX Text Control产品
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@fc6vip.cn
在工业数字化和智能制造的进程中,设备互联、系统集成和数据安全是每个企业绕不开的话题。
随着人工智能(AI)的迅速发展,如何让AI系统与外部工具、数据源和服务顺畅协作,成为了技术开发中的一大挑战。模型上下文协议(MCP)为AI系统之间提供了标准化的连接方式,而SmartBear API Hub则为开发者提供了强大的工具集,帮助简化MCP开发过程,提升系统的可靠性和可扩展性。本文将深入探讨如何通过SmartBear API Hub高效应对MCP开发中的各种挑战,从而助力开发者构建更加稳
在功能安全领域,软件开发需满足严格的验证与确认要求。传统模式下,一般需要组合多种工具来完成不同阶段的测试。作为一款专注于代码质量和功能安全的自动化测试工具,Parasoft C/C++test 提供了静态分析、单元测试、覆盖率验证等能力的集成化测试解决方案,该工具通过TÜV SÜD权威认证,能够帮助企业系统化落实功能安全要求,降低合规难度。
在功能安全项目中,开发工具可信度是认证审核的关键。工具鉴定通常伴随巨大的工作量、复杂的文档和较高的项目风险。传统流程中,团队需耗费大量资源完成工具鉴定测试与认证文档准备。作为专注于代码质量和功能安全的自动化测试工具,Parasoft C/C++test 凭借“预认证背书”与“自动化认证工具包”的相结合,将复杂工作转化为标准化测试流程,从根本上帮助企业降低合规风险与成本。
TX Text Control .NET for WPF 分标准,专业,及企业三个版本,是一套专业的文字处理控件。
TX Text Control ActiveXTX Text Control ActiveX是一个强大的文字处理组件,为开发者提供一个广泛的文字处理功能。它提供了全面的文本格式,邮件合并功能和文字处理关键性功能,如表格支持,图片,页眉和页脚、页面部分等。
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@fc6vip.cn
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢