Skip to content

JS接口介绍

注意:这两个文件请从产品示例里获取(/demo/officecontrol文件夹下),若您的产品存在升级,请确保替换产品之后JS也需要正确替换。

判断跨浏览器插件是否安装

方法:ntkoBrowser.ExtensionInstalled

语法:

javascript
ntkoBrowser.ExtensionInstalled();

功能: 用于判断跨浏览器插件是否已经安装。

返回值: Bool值,true或false。

说明: 可通过返回值判断,为true表示已安装可调用打开文档窗口方法;false表示未安装,可提示下载安装对应的安装包手动安装。该方法由ntkobackground.min.js提供,需在引入该JS的页面调用。

示例:

javascript
if (ntkoBrowser.ExtensionInstalled()) {
    console.log("跨浏览器插件已安装");
    // 可以调用打开文档窗口方法
} else {
    console.log("跨浏览器插件未安装");
    // 提示用户安装插件
    alert("请先安装跨浏览器插件");
}

判断跨浏览器插件版本信息

方法:ntkoBrowser.NtkoExtensionVersion

语法:

javascript
ntkoBrowser.NtkoExtensionVersion();

功能: 用于判断当前安装的跨浏览器插件版本号。

返回值: 返回当前安装的跨浏览器插件的版本号,如1.8.2。

说明: 可以通过该方法获取到当前安装的跨浏览器插件版本,与要安装的版本比对结合系统业务逻辑可实现若当前版本较低提示升级等功能。

示例:

javascript
var currentVersion = ntkoBrowser.NtkoExtensionVersion();
console.log("当前插件版本:", currentVersion);

// 版本比较示例
var requiredVersion = "1.8.2";
if (currentVersion < requiredVersion) {
    alert("插件版本过低,请升级到" + requiredVersion + "或更高版本");
}

判断当前窗口是否为跨浏览器窗口

方法:ntkoBrowser.NtkoJudgingBrowsers

语法:

javascript
ntkoBrowser.NtkoJudgingBrowsers();

功能: 用于判断当前窗口是否为跨浏览器窗口。

返回值: 返回true/false;返回true表示其他浏览器窗口,false表示是跨浏览器窗口。

说明: 可以使用ntkoBrowser.NtkoJudgingBrowsers()来判断是否是跨浏览器窗口然后做对应的操作。

示例:

javascript
if (ntkoBrowser.NtkoJudgingBrowsers()) {
    console.log("当前是其他浏览器窗口");
} else {
    console.log("当前是跨浏览器窗口");
}

打开文档窗口

方法:ntkoBrowser.openWindow

语法:

javascript
ntkoBrowser.openWindow(strURL, IsShowOnExtendMonitor, ProductCaption, ntkoBrowserProductKey, ntkoBrowserNoExpireKey, Param, DataSendToChild, width, height, cookiesDomainPath);

功能: 启动文档控件平台版Plus的跨浏览器扩展程序的窗口,并在对应窗口程序中打开指定的控件所在页面。该方法由ntkobackground.min.js提供,需在引入该JS的页面调用。

参数:

名称必选/可选数据类型说明
strURL必选string指定的控件所在页面路径
IsShowOnExtendMonitor可选Booltrue或false,设置弹出的跨浏览器窗口呈现上扩展屏幕
ProductCaption可选string买断产品授权工具生成的标题控件ProductCaption
ntkoBrowserProductKey可选string买断产品授权工具生成的ntkoBrowserProductKey
ntkoBrowserNoExpireKey可选string跨浏览器的解除时间限制秘钥
Param可选string可选参数
DataSendToChild可选String需要传递到子页面的数据
width可选long
height可选long
cookiesDomainPath可选Bool是否添加cookies里面的domain和path,默认false

返回值: 无返回值。

说明:

  • 第一个参数strURL,指向文档控件所在页面
  • 第二个参数IsShowOnExtendMonitor,在多屏情况下,设置弹出跨浏览器窗口呈现在扩展屏幕,非必须。默认为false
  • 第三个参数ProductCaption,只传第一个参数strURL即可。仅对买断授权的产品有效,值由秘钥生成工具genKeyExtend.exe生成,该参数对应的是工具生成的ProductCaption信息。单套购买以及测试产品,无需传递。从2021年6月份开始,此参数无需传递,传空字符串""即可
  • 第四个参数ntkoBrowserProductKey,与ProductCaption属性是一对一关系,仅对买断授权的产品有效,对应秘钥生成工具里的跨浏览器调用的ntkoBrowserProductKey秘钥信息。单套购买以及测试产品,无需传递。从2021年6月份开始,此参数无需传递,传空字符串""即可
  • 第五个参数ntkoBrowserNoExpireKey,对测试版产品无用,不需设置。只对于有时间限制的正式产品有效,对应正式产品提供的浏览器的解除时间限制秘钥信息
  • 第六个参数Param,为可选参数,第七个参数DataSendToChild为向子页面传递的数据,当使用第七个参数时,第六个参数必须写,可传空字符串
  • 参数cookiesDomainPath,bool值,true或false,默认false,不启用,不添加cookies里面的domain和path到传递的URL里

示例:

javascript
// 基本用法
function openhtml(cmd) {
    ntkoBrowser.openWindow("editindex.html?cmd=" + cmd); 
}

// 带参数的用法
function openhtmlWithParams(cmd) {
    ntkoBrowser.openWindow(
        "editindex.html?cmd=" + cmd,
        false,  // IsShowOnExtendMonitor
        "",     // ProductCaption
        "",     // ntkoBrowserProductKey
        "",     // ntkoBrowserNoExpireKey
        "",     // Param
        "data", // DataSendToChild
        1600,   // width
        1248,   // height
        false   // cookiesDomainPath
    );
}

注意:通过ntkobackgroud.min.js调用ntkoBrowser.openWindow打开文档窗口之后,文档控件打开文档的OpenFromURL以及BeginOpenFromURL的调用逻辑有如下区别:

  • OpenFromURL的调用需要在页面的Body onload里先获取文档控件对象之后,再调用OpenFromURL方法,确认文档控件完全加载出来之后再调用方法
  • BeginOpenFromURL方法,尤其是设置显示进度条即代码形如obj.BeginOpenFromURL(fileUrl,true)时,该方法需要在window的onload里去获取控件对象并调用。如果是Jquery写法也就是在ready里

向子页面传值(参数传递方式)

通过参数传递方式进行向子页面传值必须结合使用2019.12.20的JS版本。之前的JS版本不支持此方式。

当使用ntkoBrowser.openWindow方法的第七个参数来向子页面传值时,需要注意,传送的数据需要在子页面进行接收,并且要求接收的代码需要在文档完全打开之后进行,参考代码如下:

javascript
// 子页面JS函数
// 该方法用于接收父页面传递的值 方法名必须为ntkoGetParentData 一个参数 参数名自定义
function ntkoGetParentData(data) {
    datatext = data;
}

// 在文档控件的OndocumentOpened事件中 进一步接收并展示从父页面接收的数据 实际中可展示到子页面上
<script type="text/javascript" for="TANGER_OCX" event="OnDocumentOpened(File, Document)">
    if(cmd == 5) {
        ntko.ShowTipMessage("注意", "已经接收到父页面传过来的值,请注意文档中内容的变化");
        ntkoDataToChild(datatext);
    }
</script>

跨浏览器窗口秘钥设置说明

对于跨浏览器窗口显示的授权,正式单套购买的产品其授权是内置的,无需用户通过书写代码进行设置;而买断授权的产品则需要进行其秘钥的设置。

一般情况下,针对买断授权产品,与产品配套的均会有一个秘钥生成工具genKeyExtend.exe,双击这个exe通过这个工具即可获取需要的授权秘钥。

注意:安装跨浏览器插件时的安装包必须是对应的产品安装包,若使用的是测试产品即使代码中的授权信息是正确的,跨浏览器插件会依然显示演示版。

关闭文档窗口

方法:ntkoBrowser.ntkoClose

语法:

javascript
ntkoBrowser.ntkoClose(strURL);

功能: 关闭文档控件平台版Plus的跨浏览器扩展程序的窗口与指定的控件所在页面。该方法由ntkobackground.min.js提供,需在引入该JS的页面调用。

参数:

名称必选/可选数据类型说明
strURL必选string指定的要关闭的控件所在页面

返回值: 无返回值。

说明: 关闭指定页面并将该页面对应的跨浏览器插件窗口关闭。

示例:

html
<!-- 父页面(引用ntkobackground.min.js的页面)引用关闭指定文档对应的窗口 -->
<!-- 示例代码为:通过点击链接关闭文档窗口 -->
<a href="#" onclick="ntkoBrowser.ntkoClose('editindex.html?cmd=2');">关闭文档窗口</a>

注意:该方法用于关闭指定的URL对应的跨浏览器窗口,不支持IE浏览器以及双核浏览器的兼容模式。

关闭窗口事件的触发

主要针对Chrome、FireFox或双核浏览器的极速模式提供的本事件。先在父页面定义(注意:不是在子页面定义)固定名为ntkoCloseEvent的函数,当子页面所在的跨浏览器插件应用程序窗口被关闭时触发响应自动调用。本事件方法不直接支持IE浏览器,IE下可以在子页面中通过响应OnBeforeUnload或OnUnload事件,调用opener.ntkoCloseEvent()实现。关闭窗口事件由ntkobackground.min.js、ntkoofficecontrol.min.js共同完成,故事件调用时机需要注意。

javascript
// 在父页面定义的跨浏览器插件应用程序关闭事件响应方法,且方法名不能自定义,必须是ntkoCloseEvent
function ntkoCloseEvent() {
    alert("跨浏览器插件应用程序窗口已关闭!");
}
html
<!-- IE下在文档控件所在页面的body中的OnUnload事件中调用opener.ntkoCloseEvent()实现关闭ntkoBrowser.openWindow打开的窗口 -->
<body onload="cmd=getQueryString('cmd');init(cmd);" onunload="opener.ntkoCloseEvent();">

向父页面传值

当需要向父页面传值时,需要在子页面调用ntkoBrowser.ntkoSetReturnValueToParentPage(functionName,varData)方法。

方法:ntkoBrowser.ntkoSetReturnValueToParentPage

语法:

javascript
ntkoBrowser.ntkoSetReturnValueToParentPage(functionName, varData);

功能: 用于将文档控件平台版Plus的跨浏览器扩展程序的窗口里的页面数据传递至父页面(打开窗口的页面)。

参数:

名称必选/可选数据类型说明
functionName必选string在父页面定义的用于接收子页面回传值的方法名
varData必选Array接收要传递的数据的数组名,可自定义

说明: 传值方法需要在子页面上调用,通过第一个参数functionName指定父页面上接收数据的函数。页面传值由ntkoofficecontrol.min.js、ntkobackground.min.js共同完成,故代码调用时机需要注意。

示例:

javascript
// 子页面(跨浏览器窗口里的控件所在页面,即引用ntkoofficecontrol.min.js的页面)定义的向父页面回传值的方法,方法名可以自定义
function ntkoSendDataToParentPage() {
    var varData = new Array();
    varData.push(ntko.docsize); // 将控件中的文件大小作为数据之一进行传递
    varData.push(CurentTime()); // 获取当前时间做数据之一进行传递
    try {
        ntkoBrowser.ntkoSetReturnValueToParentPage("OnData", varData);
    }
    catch(e) {
        console.log("传值失败:", e);
    }
}

// 在父页面定义的用于接收子页面回传值的方法,方法名可以自定义,定义后的方法名需要在子页面中通过ntkoBrowser.ntkoSetReturnValueToParentPage进行注册,即与子页面代码中的ntkoBrowser.ntkoSetReturnValueToParentPage方法的第一个参数functionName保持一致
function OnData(argv1, argv2) {
    alert("请注意示例右侧单元格两个信息的变化。");
    document.getElementById("spDocSize").innerHTML = argv1 + " byte";
    document.getElementById("spUpdateTime").innerHTML = argv2;
}

父页面向子页面传值的另一种方式

由于此种方式逻辑较为复杂,2012.12.20 JS版本之后建议在ntkoBrowser.openWindow方法中通过参数进行向子页面传值。

当父页面需要向跨浏览器窗口里页面传值时,需要在父页面调用ntkoBrowser.ntkoSendDataToChild(varData)的发送方法。

方法:ntkoBrowser.ntkoSendDataToChild

语法:

javascript
ntkoBrowser.ntkoSendDataToChild(strUrl, varData);

功能: 用于将数据传递至文档控件平台版Plus的跨浏览器扩展程序的窗口里的页面。

参数:

名称必选/可选数据类型说明
strUrl必选String传递数据的目的页面的url,与打开的子页面url一致
varData必选String要传递的数据的字符串

说明: 传值方法需要在父页面上调用,通过第一个参数strUrl指定接收的子页面,该url参数必须与传值到的子页面(控件所在页面)的url一致。该页面传值由ntkobackground.min.js、ntkoofficecontrol.min.js共同完成,故代码调用时机需要注意并且需要在子页面上进行接收,接收函数名必须是ntkoGetParentData(varData)。

示例:

javascript
// 父页面代码
// 父页面往子页面传值
function ntkoSendDataToChildtext(ab) {
    ntkoBrowser.ntkoSendDataToChild("editindex.html?cmd=" + datatochildcmd, "欢迎使用NTKO OFFICE文档控件平台版PLUS");
}

// 需要注意的是 父页面上还需要调用如下代码,详情可参考demo中 ntko.js里的代码写法
ntkoBrowser.ntkoSetReturnValueToParentPage("ntkoSendDataToChildtext", "ntko"); // 第一个参数是父页面向子页面传值调用的自定义function名

// 子页面接收  函数方法名必须是ntkoGetParentData 参数自定义
function ntkoGetParentData(data) {
    ntkoDataToChild(data);
}

function ntkoDataToChild(data) {
    document.getElementById("DataToChild").innerHTML = "获取到父页面的值为:" + data;
}

注意:传值时指定的url必须与打开的子页面即控件所在页面的url一致,否则会出现传值传不过去的情况。

弹窗自带关闭窗口方法

方法:ntkoWebBrowseCloseEvent()

功能: 将当前窗口关闭。在控件所在页面上调用此方法即可。

示例:

javascript
function ntkoWebBrowseCloseEvent() {
    var ntkoconfirm = ntko.ShowConfirmMessage("提示", "是否关闭窗口?");
    if (ntkoconfirm) { // 点击"是",关闭窗口;点击"否",不关闭窗口
        ntkocloseparentpage();
        return true;
    }
    else {
        return false;
    }
}

注意:ntkoWebBrowseCloseEvent()事件与window.onbeforeunload事件,主要区别在于:ntkoWebBrowseCloseEvent关闭的时候点击否不会把跨浏览器窗口关闭而onbeforeunload事件关闭的时候不管点击否还是是都会被关闭。