Skip to content

文档相关事件

文档打开事件

AfterOpenFromURL

语法

javascript
AfterOpenFromURL(Document, StatusCode)

参数

名称必选/可选数据类型说明
Document可选object当前打开的文档对象
StatusCode可选long状态值,参照3.5.11说明

说明

该事件在BeginOpenFromURL方法执行完毕之后被触发。 该事件和OnDocumentOpened作用基本相同,如果用BeginOpenFromURL加载文档则加载时进行的操作必须写在这两个方法的其中一个方法中。请参考BeginOpenFromURL方法。

示例代码

html
<object name='webwps' id='webwps_id' type='application/ntko-plug' 
        data='/opt/kingsoft/wps-office/office6/mui/default/templates/Normal.dotm' 
        width='1000' height='600' _FileNew=false  
        ForAfterOpenFromURL="afterOpenFromURL">
</object>
javascript
// 对应JS函数
function afterOpenFromURL(Document, StatusCode) {
    alert("OpenFromURL成功回调");
    console.log("文档对象:", Document);
    console.log("状态码:", StatusCode);
    
    // 检查打开状态
    if (StatusCode === 0) {
        console.log("文档打开成功");
        // 执行文档打开后的操作
        initializeDocument();
    } else {
        console.error("文档打开失败,状态码:", StatusCode);
    }
}

// 文档打开后的初始化操作
function initializeDocument() {
    // 设置文档属性
    // 加载用户配置
    // 初始化工具栏
    console.log("文档初始化完成");
}

OnDocumentOpened

语法

javascript
OnDocumentOpened(File, Document)

参数

名称必选/可选数据类型说明
File可选string当前打开的文档路径或URL
Document可选object当前打开的文档对象

说明

该事件在文档打开完毕时执行。 第一个参数是文档路径或者URL,第二个参数是文档的自动化接口。比如,对于一个Word文档,第二个参数是一个Word.Document对象。

示例代码

javascript
// 文档打开事件处理
function OnDocumentOpened(File, Document) {
    console.log("文档已打开:", File);
    console.log("文档对象:", Document);
    
    // 检查文档类型
    if (File.endsWith('.docx') || File.endsWith('.doc')) {
        console.log("Word文档已打开");
        handleWordDocument(Document);
    } else if (File.endsWith('.xlsx') || File.endsWith('.xls')) {
        console.log("Excel文档已打开");
        handleExcelDocument(Document);
    }
    
    // 设置文档属性
    setDocumentProperties(Document);
    
    // 加载用户配置
    loadUserSettings();
}

// 处理Word文档
function handleWordDocument(doc) {
    // Word文档特定操作
    console.log("处理Word文档");
}

// 处理Excel文档
function handleExcelDocument(doc) {
    // Excel文档特定操作
    console.log("处理Excel文档");
}

// 设置文档属性
function setDocumentProperties(doc) {
    // 设置文档属性
    console.log("设置文档属性");
}

// 加载用户设置
function loadUserSettings() {
    // 加载用户配置
    console.log("加载用户设置");
}

文档关闭事件

OnDocumentClosed

语法

javascript
OnDocumentClosed()

参数

无参数。

说明

该事件在文档关闭之后执行。

示例代码

javascript
// 文档关闭事件处理
function OnDocumentClosed() {
    console.log("文档已关闭");
    
    // 保存用户设置
    saveUserSettings();
    
    // 清理资源
    cleanupResources();
    
    // 记录操作日志
    logDocumentOperation("文档关闭");
}

// 保存用户设置
function saveUserSettings() {
    // 保存用户配置到本地存储
    var settings = {
        lastDocument: getCurrentDocumentPath(),
        userPreferences: getUserPreferences(),
        timestamp: new Date().toISOString()
    };
    
    localStorage.setItem('userSettings', JSON.stringify(settings));
    console.log("用户设置已保存");
}

// 清理资源
function cleanupResources() {
    // 清理临时文件
    // 释放内存
    // 重置状态
    console.log("资源清理完成");
}

// 记录操作日志
function logDocumentOperation(operation) {
    var logEntry = {
        operation: operation,
        timestamp: new Date().toISOString(),
        user: getCurrentUser()
    };
    
    console.log("操作日志:", logEntry);
}

文件操作事件

OnFileCommand

语法

javascript
OnFileCommand(Item, IsCancel)

参数

名称必选/可选数据类型说明
Item必选FileCommandType文件菜单命令索引
IsCancel必选bool是否取消命令

说明

该事件在用户单击文件菜单或者工具栏的相关按钮时发生。 可以与CancelLastCommand属性配合使用来接管缺省的工具栏的新建,打开或者保存操作。

示例代码

html
<object name='webwps' id='webwps_id' type='application/ntko-plug' 
        data='/opt/kingsoft/wps-office/office6/mui/default/templates/Normal.dotm' 
        width='1000' height='600' _FileNew=false  
        ForOnFileCommand="OnFileCommand">
</object>
javascript
// 文件命令事件处理
function OnFileCommand(Item, IsCancel) {
    console.log("文件命令:", Item);
    console.log("是否取消:", IsCancel);
    
    switch(Item) {
        case 1: // 新建
            handleNewDocument();
            break;
        case 2: // 打开
            handleOpenDocument();
            break;
        case 3: // 保存
            handleSaveDocument();
            break;
        case 4: // 另存为
            handleSaveAsDocument();
            break;
        case 5: // 打印
            handlePrintDocument();
            break;
        default:
            console.log("未知文件命令:", Item);
    }
}

// 处理新建文档
function handleNewDocument() {
    console.log("处理新建文档");
    // 可以在这里添加自定义的新建文档逻辑
}

// 处理打开文档
function handleOpenDocument() {
    console.log("处理打开文档");
    // 可以在这里添加自定义的打开文档逻辑
}

// 处理保存文档
function handleSaveDocument() {
    console.log("处理保存文档");
    // 可以在这里添加自定义的保存文档逻辑
    // 例如:自动备份、版本控制等
}

// 处理另存为文档
function handleSaveAsDocument() {
    console.log("处理另存为文档");
    // 可以在这里添加自定义的另存为逻辑
}

// 处理打印文档
function handlePrintDocument() {
    console.log("处理打印文档");
    // 可以在这里添加自定义的打印逻辑
}

文档发布事件

OnPublishAsPDFToURL

语法

javascript
OnPublishAsPDFToURL(RetData, ErrorCode)

参数

名称必选/可选数据类型说明
RetData可选string后台自定义返回字符串
ErrorCode可选long错误状态值

说明

该事件在PublishAsPDFToURL方法执行完毕之后被触发。 可以用来判断保存到URL的状态。

示例代码

html
<object name='webwps' id='webwps_id' type='application/ntko-plug' 
        data='/opt/kingsoft/wps-office/office6/mui/default/templates/Normal.dotm' 
        width='1000' height='600' _FileNew=false  
        ForOnPublishAsPDFToURL="onPublishAsPDFToURL">
</object>
javascript
// PDF发布事件处理
function onPublishAsPDFToURL(RetData, ErrorCode) {
    console.log("PDF发布返回数据:", RetData);
    console.log("错误代码:", ErrorCode);
    
    if (ErrorCode === 0) {
        console.log("PDF发布成功");
        alert("PDF发布成功");
        
        // 处理成功后的操作
        handlePDFPublishSuccess(RetData);
    } else {
        console.error("PDF发布失败,错误代码:", ErrorCode);
        alert("PDF发布失败");
        
        // 处理失败后的操作
        handlePDFPublishError(ErrorCode);
    }
}

// 处理PDF发布成功
function handlePDFPublishSuccess(retData) {
    // 显示成功消息
    showSuccessMessage("PDF文档已成功发布");
    
    // 记录发布日志
    logPublishOperation("PDF", "成功", retData);
    
    // 更新文档状态
    updateDocumentStatus("已发布为PDF");
}

// 处理PDF发布失败
function handlePDFPublishError(errorCode) {
    // 显示错误消息
    var errorMessage = getErrorMessage(errorCode);
    showErrorMessage("PDF发布失败:" + errorMessage);
    
    // 记录错误日志
    logPublishOperation("PDF", "失败", errorCode);
}

// 获取错误消息
function getErrorMessage(errorCode) {
    var errorMessages = {
        1: "网络连接失败",
        2: "服务器错误",
        3: "文件格式错误",
        4: "权限不足"
    };
    
    return errorMessages[errorCode] || "未知错误";
}

OnPublishAsOFDToURL

语法

javascript
OnPublishAsOFDToURL(RetData, ErrorCode)

参数

名称必选/可选数据类型说明
RetData可选string后台自定义返回字符串
ErrorCode可选long错误状态值

说明

该事件在PublishAsOFDToURL方法执行完毕之后被触发。 可以用来判断保存到URL的状态。

示例代码

html
<object name='webwps' id='webwps_id' type='application/ntko-plug' 
        data='/opt/kingsoft/wps-office/office6/mui/default/templates/Normal.dotm' 
        width='1000' height='600' _FileNew=false  
        ForOnPublishAsOFDToURL="onPublishAsOFDToURL">
</object>
javascript
// OFD发布事件处理
function onPublishAsOFDToURL(RetData, ErrorCode) {
    console.log("OFD发布返回数据:", RetData);
    console.log("错误代码:", ErrorCode);
    
    if (ErrorCode === 0) {
        console.log("OFD发布成功");
        alert("OFD发布成功");
        
        // 处理成功后的操作
        handleOFDPublishSuccess(RetData);
    } else {
        console.error("OFD发布失败,错误代码:", ErrorCode);
        alert("OFD发布失败");
        
        // 处理失败后的操作
        handleOFDPublishError(ErrorCode);
    }
}

// 处理OFD发布成功
function handleOFDPublishSuccess(retData) {
    // 显示成功消息
    showSuccessMessage("OFD文档已成功发布");
    
    // 记录发布日志
    logPublishOperation("OFD", "成功", retData);
    
    // 更新文档状态
    updateDocumentStatus("已发布为OFD");
}

// 处理OFD发布失败
function handleOFDPublishError(errorCode) {
    // 显示错误消息
    var errorMessage = getErrorMessage(errorCode);
    showErrorMessage("OFD发布失败:" + errorMessage);
    
    // 记录错误日志
    logPublishOperation("OFD", "失败", errorCode);
}

界面模式事件

OnScreenModeChanged

语法

javascript
OnScreenModeChanged(IsFullScreenMode)

参数

名称必选/可选数据类型说明
IsFullScreenMode可选bool是否处于全屏状态

说明

此事件当控件在全屏/非全屏状态切换时被触发。 参数说明了此时控件是处于全屏还是非全屏编辑模式。

示例代码

javascript
// 全屏模式切换事件处理
function OnScreenModeChanged(IsFullScreenMode) {
    console.log("全屏模式状态:", IsFullScreenMode);
    
    if (IsFullScreenMode) {
        console.log("进入全屏模式");
        handleEnterFullScreen();
    } else {
        console.log("退出全屏模式");
        handleExitFullScreen();
    }
}

// 进入全屏模式
function handleEnterFullScreen() {
    // 隐藏不必要的界面元素
    hideUIElements();
    
    // 调整布局
    adjustLayoutForFullScreen();
    
    // 记录全屏状态
    setFullScreenState(true);
}

// 退出全屏模式
function handleExitFullScreen() {
    // 显示界面元素
    showUIElements();
    
    // 恢复布局
    restoreLayout();
    
    // 记录全屏状态
    setFullScreenState(false);
}

// 隐藏界面元素
function hideUIElements() {
    // 隐藏工具栏
    // 隐藏状态栏
    console.log("隐藏界面元素");
}

// 显示界面元素
function showUIElements() {
    // 显示工具栏
    // 显示状态栏
    console.log("显示界面元素");
}

AfterPreviewClosed

语法

javascript
AfterPreviewClosed()

参数

无参数。

说明

此事件当控件在退出打印预览模式后触发。

示例代码

javascript
// 打印预览关闭事件处理
function AfterPreviewClosed() {
    console.log("打印预览已关闭");
    
    // 恢复编辑模式
    restoreEditMode();
    
    // 更新界面状态
    updateUIState();
    
    // 记录预览操作
    logPreviewOperation();
}

// 恢复编辑模式
function restoreEditMode() {
    // 恢复编辑工具栏
    // 恢复编辑状态
    console.log("恢复编辑模式");
}

// 更新界面状态
function updateUIState() {
    // 更新按钮状态
    // 更新菜单状态
    console.log("更新界面状态");
}

// 记录预览操作
function logPreviewOperation() {
    var logEntry = {
        operation: "打印预览关闭",
        timestamp: new Date().toISOString()
    };
    
    console.log("预览操作日志:", logEntry);
}

完整示例

文档事件管理器

javascript
// 文档事件管理器
class DocumentEventManager {
    constructor() {
        this.documentState = {
            isOpen: false,
            isFullScreen: false,
            isPreview: false,
            lastOperation: null
        };
    }
    
    // 文档打开处理
    handleDocumentOpened(file, document) {
        this.documentState.isOpen = true;
        this.documentState.lastOperation = 'opened';
        
        console.log("文档已打开:", file);
        this.initializeDocument(document);
    }
    
    // 文档关闭处理
    handleDocumentClosed() {
        this.documentState.isOpen = false;
        this.documentState.lastOperation = 'closed';
        
        console.log("文档已关闭");
        this.cleanupDocument();
    }
    
    // 全屏模式切换处理
    handleScreenModeChanged(isFullScreen) {
        this.documentState.isFullScreen = isFullScreen;
        
        if (isFullScreen) {
            this.enterFullScreenMode();
        } else {
            this.exitFullScreenMode();
        }
    }
    
    // 打印预览关闭处理
    handlePreviewClosed() {
        this.documentState.isPreview = false;
        this.documentState.lastOperation = 'preview_closed';
        
        console.log("打印预览已关闭");
        this.restoreEditMode();
    }
    
    // 初始化文档
    initializeDocument(document) {
        // 设置文档属性
        // 加载用户配置
        // 初始化工具栏
        console.log("文档初始化完成");
    }
    
    // 清理文档
    cleanupDocument() {
        // 保存用户设置
        // 清理资源
        // 重置状态
        console.log("文档清理完成");
    }
    
    // 进入全屏模式
    enterFullScreenMode() {
        // 隐藏界面元素
        // 调整布局
        console.log("进入全屏模式");
    }
    
    // 退出全屏模式
    exitFullScreenMode() {
        // 显示界面元素
        // 恢复布局
        console.log("退出全屏模式");
    }
    
    // 恢复编辑模式
    restoreEditMode() {
        // 恢复编辑状态
        // 更新界面
        console.log("恢复编辑模式");
    }
}

事件处理工具

javascript
// 事件处理工具
class EventHandler {
    // 显示成功消息
    static showSuccessMessage(message) {
        console.log("成功:" + message);
        // 可以集成UI框架显示消息
    }
    
    // 显示错误消息
    static showErrorMessage(message) {
        console.error("错误:" + message);
        // 可以集成UI框架显示错误消息
    }
    
    // 记录操作日志
    static logOperation(operation, status, data) {
        var logEntry = {
            operation: operation,
            status: status,
            data: data,
            timestamp: new Date().toISOString()
        };
        
        console.log("操作日志:", logEntry);
        // 可以发送到服务器记录
    }
    
    // 更新文档状态
    static updateDocumentStatus(status) {
        console.log("文档状态更新为:" + status);
        // 可以更新UI状态显示
    }
}

注意事项

  1. 事件绑定

    • 确保在HTML中正确绑定事件处理函数
    • 事件函数名要与HTML中的属性值一致
    • 注意大小写和拼写
  2. 参数处理

    • 检查参数的有效性
    • 处理可选参数的情况
    • 注意参数的数据类型
  3. 错误处理

    • 检查状态码和错误代码
    • 提供用户友好的错误信息
    • 记录错误日志
  4. 性能优化

    • 避免在事件处理中执行耗时操作
    • 合理使用异步操作
    • 避免内存泄漏
  5. 状态管理

    • 维护文档状态的一致性
    • 及时更新UI状态
    • 处理状态切换
  6. 用户体验

    • 提供及时的状态反馈
    • 显示操作进度
    • 处理用户交互
  7. 兼容性

    • 考虑不同浏览器的兼容性
    • 处理不同版本的差异
    • 测试各种场景