Skip to content

WORD及WPS相关事件

概述

本节介绍软航OFFICE文档控件提供的WORD及WPS相关事件,这些事件允许开发者在用户与WORD和WPS文档交互时进行响应和处理,为文档管理系统提供完整的WORD和WPS事件处理能力。

选择变化事件

OnWordWPSSelChange

语法:

javascript
OnWordWPSSelChange(Selection)

功能:
当Word或者WPS文档的插入点或者选中内容改变时触发此事件。

参数:

名称必选/可选数据类型说明
Selection必选object返回代码改变的插入点对象

使用示例:

javascript
// 基本用法
<script language="JScript" for="TANGER_OCX" event="OnWordWPSSelChange(Selection)">
    console.log("Word/WPS选择变化");
    console.log("选择对象:", Selection);
</script>

// 处理选择变化
<script language="JScript" for="TANGER_OCX" event="OnWordWPSSelChange(Selection)">
    console.log("文档选择已改变");
    
    try {
        // 获取选择内容
        var selectedText = Selection.Text;
        console.log("选中文本:", selectedText);
        
        // 获取选择范围
        var startPos = Selection.Start;
        var endPos = Selection.End;
        console.log("选择范围:", startPos, "到", endPos);
        
        // 可以执行其他操作
        // handleSelectionChange(selectedText, startPos, endPos);
    } catch(err) {
        console.error("处理选择变化时出错:", err);
    }
</script>

// 记录选择变化
<script language="JScript" for="TANGER_OCX" event="OnWordWPSSelChange(Selection)">
    var timestamp = new Date().toISOString();
    console.log("选择变化记录:");
    console.log("时间:", timestamp);
    console.log("选择对象:", Selection);
    
    // 可以记录用户选择行为
    // logUserSelection(Selection, timestamp);
</script>

右键事件

OnWordBeforeRightClick

语法:

javascript
OnWordBeforeRightClick(Selection, IsCancel)

功能:
该事件在WORD、WPS右键事件发生之前激活。

参数:

名称必选/可选数据类型说明
Selection必选object返回代码改变的插入点对象
IsCancel必选bool是否取消事件

说明:
第一个参数是Selection指明了事件发生的Selection对象,第2个参数是是否取消事件。在WEB编程中,第2个参数不能使用,而应该在此事件中,使用CancelWordRightClick属性设置为true来取消事件。

使用示例:

javascript
// 基本用法
<script language="JScript" for="TANGER_OCX" event="OnWordBeforeRightClick(Selection, IsCancel)">
    console.log("Word/WPS右键事件");
    console.log("选择对象:", Selection);
    console.log("是否取消:", IsCancel);
</script>

// 处理右键事件
<script language="JScript" for="TANGER_OCX" event="OnWordBeforeRightClick(Selection, IsCancel)">
    console.log("准备显示右键菜单");
    
    try {
        // 获取右键位置的选择内容
        var selectedText = Selection.Text;
        console.log("右键位置文本:", selectedText);
        
        // 根据选择内容决定是否显示右键菜单
        if (selectedText && selectedText.trim() !== "") {
            console.log("有选中文本,显示右键菜单");
            // 允许显示右键菜单
        } else {
            console.log("无选中文本,可能取消右键菜单");
            // 可以取消右键菜单
            // TANGER_OCX.CancelWordRightClick = true;
        }
    } catch(err) {
        console.error("处理右键事件时出错:", err);
    }
</script>

// 自定义右键菜单处理
<script language="JScript" for="TANGER_OCX" event="OnWordBeforeRightClick(Selection, IsCancel)">
    console.log("自定义右键菜单处理");
    
    try {
        // 获取选择内容
        var selectedText = Selection.Text;
        
        // 根据选择内容决定菜单选项
        if (selectedText && selectedText.trim() !== "") {
            console.log("显示文本相关菜单选项");
            // 显示复制、粘贴、格式化等选项
        } else {
            console.log("显示默认菜单选项");
            // 显示插入、格式等选项
        }
        
        // 可以记录右键菜单使用情况
        // logRightClickUsage(selectedText);
    } catch(err) {
        console.error("处理自定义右键菜单时出错:", err);
    }
</script>

双击事件

OnWordBeforeDoubleClick

语法:

javascript
OnWordBeforeDoubleClick(Selection, IsCancel)

功能:
该事件在WORD、WPS双击事件发生之前激活。

参数:

名称必选/可选数据类型说明
Selection必选object返回代码改变的插入点对象
IsCancel必选bool是否取消事件

说明:
第一个参数是Selection指明了事件发生的Selection对象,第2个参数是是否取消事件。在WEB编程中,第2个参数不能使用,而应该在此事件中,使用CancelWordDoubleClick属性设置为true来取消事件。

使用示例:

javascript
// 基本用法
<script language="JScript" for="TANGER_OCX" event="OnWordBeforeDoubleClick(Selection, IsCancel)">
    console.log("Word/WPS双击事件");
    console.log("选择对象:", Selection);
    console.log("是否取消:", IsCancel);
</script>

// 处理双击事件
<script language="JScript" for="TANGER_OCX" event="OnWordBeforeDoubleClick(Selection, IsCancel)">
    console.log("准备处理双击事件");
    
    try {
        // 获取双击位置的选择内容
        var selectedText = Selection.Text;
        console.log("双击位置文本:", selectedText);
        
        // 根据选择内容决定双击行为
        if (selectedText && selectedText.trim() !== "") {
            console.log("双击选中文本,执行编辑操作");
            // 可以执行编辑操作
            // handleTextEdit(selectedText);
        } else {
            console.log("双击空白区域,执行插入操作");
            // 可以执行插入操作
            // handleInsertOperation();
        }
    } catch(err) {
        console.error("处理双击事件时出错:", err);
    }
</script>

// 自定义双击行为
<script language="JScript" for="TANGER_OCX" event="OnWordBeforeDoubleClick(Selection, IsCancel)">
    console.log("自定义双击行为");
    
    try {
        // 获取选择内容
        var selectedText = Selection.Text;
        
        // 根据选择内容类型决定行为
        if (selectedText && selectedText.trim() !== "") {
            // 检查是否为链接
            if (selectedText.startsWith("http://") || selectedText.startsWith("https://")) {
                console.log("双击链接,打开网页");
                // 打开链接
                // openLink(selectedText);
            } else {
                console.log("双击文本,进入编辑模式");
                // 进入编辑模式
                // enterEditMode(selectedText);
            }
        } else {
            console.log("双击空白,插入内容");
            // 插入默认内容
            // insertDefaultContent();
        }
    } catch(err) {
        console.error("处理自定义双击行为时出错:", err);
    }
</script>

链接点击事件

语法:

javascript
OnClickHyperLink(bstrName, IsCancel)

功能:
该事件在WORD文档点击链接事件发生之前激活。

参数:

名称必选/可选数据类型说明
bstrName必选string链接字符串
IsCancel必选bool是否取消链接跳转

使用示例:

javascript
// 基本用法
<script language="JScript" for="TANGER_OCX" event="OnClickHyperLink(bstrName, IsCancel)">
    console.log("点击链接:", bstrName);
    console.log("是否取消:", IsCancel);
</script>

// 处理链接点击
<script language="JScript" for="TANGER_OCX" event="OnClickHyperLink(bstrName, IsCancel)">
    console.log("准备处理链接点击");
    
    try {
        console.log("链接地址:", bstrName);
        
        // 验证链接安全性
        if (bstrName.startsWith("http://") || bstrName.startsWith("https://")) {
            console.log("安全链接,允许跳转");
            // 可以记录链接点击
            // logLinkClick(bstrName);
        } else {
            console.log("不安全链接,取消跳转");
            // 取消链接跳转
            // IsCancel = true;
        }
    } catch(err) {
        console.error("处理链接点击时出错:", err);
    }
</script>

// 自定义链接处理
<script language="JScript" for="TANGER_OCX" event="OnClickHyperLink(bstrName, IsCancel)">
    console.log("自定义链接处理");
    
    try {
        console.log("链接地址:", bstrName);
        
        // 根据链接类型决定处理方式
        if (bstrName.startsWith("mailto:")) {
            console.log("邮件链接,打开邮件客户端");
            // 打开邮件客户端
            // openMailClient(bstrName);
        } else if (bstrName.startsWith("tel:")) {
            console.log("电话链接,拨打电话");
            // 拨打电话
            // makePhoneCall(bstrName);
        } else if (bstrName.startsWith("http://") || bstrName.startsWith("https://")) {
            console.log("网页链接,打开浏览器");
            // 打开浏览器
            // openBrowser(bstrName);
        } else {
            console.log("其他类型链接");
            // 处理其他类型链接
            // handleOtherLink(bstrName);
        }
        
        // 可以记录链接点击行为
        // logLinkClickBehavior(bstrName);
    } catch(err) {
        console.error("处理自定义链接时出错:", err);
    }
</script>

方法分类总结

分类事件功能说明
选择变化OnWordWPSSelChange选择内容改变时触发选择变化处理
右键事件OnWordBeforeRightClick右键事件发生前触发右键菜单处理
双击事件OnWordBeforeDoubleClick双击事件发生前触发双击行为处理
链接事件OnClickHyperLink链接点击时触发链接跳转处理

使用流程

1. 基本WORD及WPS事件处理流程

javascript
// 基本WORD及WPS事件处理流程
function basicWordWPSEventHandling() {
    // 选择变化事件处理
    function handleSelectionChange(selection) {
        console.log("选择变化:", selection);
        // 处理选择变化
    }
    
    // 右键事件处理
    function handleRightClick(selection, isCancel) {
        console.log("右键事件:", selection, isCancel);
        // 处理右键事件
    }
    
    // 双击事件处理
    function handleDoubleClick(selection, isCancel) {
        console.log("双击事件:", selection, isCancel);
        // 处理双击事件
    }
}

2. 高级WORD及WPS事件处理流程

javascript
// 高级WORD及WPS事件处理流程
function advancedWordWPSEventHandling() {
    // WORD及WPS事件配置
    var wordWPSEventConfig = {
        enableLogging: true,
        enableCustomHandling: true,
        enableLinkProcessing: true
    };
    
    // 处理选择变化
    function handleAdvancedSelectionChange(selection) {
        if (wordWPSEventConfig.enableLogging) {
            console.log("选择变化日志:", selection);
        }
        
        if (wordWPSEventConfig.enableCustomHandling) {
            // 执行自定义处理
        }
    }
    
    // 处理右键事件
    function handleAdvancedRightClick(selection, isCancel) {
        if (wordWPSEventConfig.enableLogging) {
            console.log("右键事件日志:", selection);
        }
        
        if (wordWPSEventConfig.enableCustomHandling) {
            // 执行自定义处理
        }
    }
}

3. WORD及WPS事件质量控制流程

javascript
// WORD及WPS事件质量控制流程
function wordWPSEventQualityControl() {
    // 处理WORD及WPS事件质量控制
    function controlWordWPSEventQuality() {
        var wordWPSEventQuality = {
            totalEvents: 0,
            successfulEvents: 0,
            failedEvents: 0,
            qualityScore: 0
        };
        
        // 计算质量分数
        if (wordWPSEventQuality.totalEvents > 0) {
            wordWPSEventQuality.qualityScore = (wordWPSEventQuality.successfulEvents / wordWPSEventQuality.totalEvents) * 100;
        }
        
        console.log("WORD及WPS事件质量控制:", wordWPSEventQuality);
        return wordWPSEventQuality;
    }
    
    // 执行质量控制
    var qualityResult = controlWordWPSEventQuality();
    console.log("WORD及WPS事件质量控制结果:", qualityResult);
}

完整示例

1. 基础WORD及WPS事件处理

javascript
// 基础WORD及WPS事件处理示例
function basicWordWPSEventHandling() {
    // 选择变化处理
    function onSelectionChange(selection) {
        console.log("选择变化:", selection);
        // 处理选择变化
    }
    
    // 右键事件处理
    function onRightClick(selection, isCancel) {
        console.log("右键事件:", selection, isCancel);
        // 处理右键事件
    }
}

2. 高级WORD及WPS事件处理

javascript
// 高级WORD及WPS事件处理示例
function advancedWordWPSEventHandling() {
    // WORD及WPS事件管理
    var wordWPSEventManager = {
        isSelectionEnabled: true,
        isRightClickEnabled: true,
        isDoubleClickEnabled: true
    };
    
    // 处理选择变化
    function handleSelectionChange(selection) {
        if (wordWPSEventManager.isSelectionEnabled) {
            console.log("选择变化处理:", selection);
            // 处理选择变化
        }
    }
    
    // 处理右键事件
    function handleRightClick(selection, isCancel) {
        if (wordWPSEventManager.isRightClickEnabled) {
            console.log("右键事件处理:", selection, isCancel);
            // 处理右键事件
        }
    }
}

3. WORD及WPS事件质量控制

javascript
// WORD及WPS事件质量控制示例
function wordWPSEventQualityControl() {
    // WORD及WPS事件质量控制
    function controlWordWPSEventQuality() {
        var wordWPSEventQuality = {
            selectionChanges: 0,
            rightClicks: 0,
            doubleClicks: 0,
            linkClicks: 0,
            errors: []
        };
        
        // 监控WORD及WPS事件质量
        function monitorWordWPSEventQuality(eventType, success) {
            if (success) {
                wordWPSEventQuality[eventType]++;
            } else {
                wordWPSEventQuality.errors.push({
                    event: eventType,
                    timestamp: new Date().toISOString()
                });
            }
        }
        
        console.log("WORD及WPS事件质量控制:", wordWPSEventQuality);
        return wordWPSEventQuality;
    }
    
    // 执行质量控制
    var qualityResult = controlWordWPSEventQuality();
    console.log("WORD及WPS事件质量控制结果:", qualityResult);
}

注意事项

  1. 事件顺序:注意WORD及WPS事件触发的顺序,确保在正确的时机执行相应操作
  2. 参数验证:验证WORD及WPS事件参数的有效性,避免空值或无效值
  3. 错误处理:实现完善的错误处理机制
  4. 性能考虑:避免在WORD及WPS事件处理中执行耗时操作
  5. 资源管理:及时清理不需要的资源
  6. 状态同步:保持WORD及WPS状态的一致性
  7. 用户体验:确保WORD及WPS事件处理不影响用户体验

错误处理

javascript
// WORD及WPS事件错误处理
function handleWordWPSEventError(eventType, error) {
    console.error("WORD及WPS事件处理失败:", eventType, error.message);
    
    switch(eventType) {
        case 'OnWordWPSSelChange':
            console.log("选择变化事件失败,请检查:");
            console.log("1. 选择对象是否有效");
            console.log("2. 选择变化处理是否正确");
            console.log("3. 文档状态是否正常");
            break;
        case 'OnWordBeforeRightClick':
            console.log("右键事件失败,请检查:");
            console.log("1. 右键菜单是否正确配置");
            console.log("2. 右键事件处理是否正确");
            console.log("3. 取消属性设置是否正确");
            break;
        case 'OnClickHyperLink':
            console.log("链接点击事件失败,请检查:");
            console.log("1. 链接地址是否有效");
            console.log("2. 链接处理是否正确");
            console.log("3. 取消属性设置是否正确");
            break;
        default:
            console.log("未知WORD及WPS事件处理失败");
    }
}

最佳实践

1. WORD及WPS事件管理最佳实践

javascript
// WORD及WPS事件管理最佳实践
function wordWPSEventManagementBestPractice() {
    // WORD及WPS事件配置
    var wordWPSEventConfig = {
        enableLogging: true,
        enableCustomHandling: true,
        enableLinkProcessing: true,
        enableQualityControl: true
    };
    
    // 应用WORD及WPS事件配置
    function applyWordWPSEventConfig() {
        try {
            // 设置WORD及WPS事件处理
            if (wordWPSEventConfig.enableLogging) {
                console.log("WORD及WPS事件日志已启用");
            }
            
            if (wordWPSEventConfig.enableCustomHandling) {
                console.log("自定义处理已启用");
            }
            
            console.log("WORD及WPS事件配置应用成功");
        } catch (error) {
            handleWordWPSEventError('applyWordWPSEventConfig', error);
        }
    }
    
    // 应用配置
    applyWordWPSEventConfig();
}

2. WORD及WPS事件质量控制最佳实践

javascript
// WORD及WPS事件质量控制最佳实践
function wordWPSEventQualityControlBestPractice() {
    // WORD及WPS事件质量控制
    function controlWordWPSEventQuality() {
        try {
            // WORD及WPS事件质量控制
            var wordWPSEventQuality = {
                totalEvents: 0,
                successfulEvents: 0,
                failedEvents: 0,
                qualityScore: 0
            };
            
            // 计算质量分数
            if (wordWPSEventQuality.totalEvents > 0) {
                wordWPSEventQuality.qualityScore = (wordWPSEventQuality.successfulEvents / wordWPSEventQuality.totalEvents) * 100;
            }
            
            console.log("WORD及WPS事件质量控制完成:", wordWPSEventQuality);
            return wordWPSEventQuality;
        } catch (error) {
            console.error("WORD及WPS事件质量控制失败:", error.message);
            return null;
        }
    }
    
    // 执行质量控制
    var qualityResult = controlWordWPSEventQuality();
    console.log("WORD及WPS事件质量控制结果:", qualityResult);
}

技术要点

  1. 事件顺序:注意WORD及WPS事件触发的顺序,确保在正确的时机执行相应操作
  2. 参数验证:验证WORD及WPS事件参数的有效性,避免空值或无效值
  3. 错误处理:完善的错误处理机制
  4. 性能优化:避免在WORD及WPS事件处理中执行耗时操作
  5. 资源管理:及时清理不需要的资源
  6. 状态同步:保持WORD及WPS状态的一致性
  7. 用户体验:确保WORD及WPS事件处理不影响用户体验