您的位置:首页 > 移动开发

修改web office apps 默认在浏览器中打开

2012-02-24 11:56 465 查看
最近在搞鼓web office apps的时候发现,在新建文档的时候,





 

IE浏览器会默认检测本机是否安装了office系列,安装了的话会尝试用客户端office打开模板文档新建。

下图是客户端安装了office 2007 sp2版本的情况(测试了三个版本的office,office 2003、office 2007、office 2007 sp2,发现office 2007 sp2在新建过程中最趋稳定,并且能够识别form认证的站点文档)





 

调用客户端的代码实际是跟下面三个ActiveX有关

ActiveXObject("SharePoint.OpenDocuments.1");
ActiveXObject("SharePoint.OpenDocuments.2");
ActiveXObject("SharePoint.OpenDocuments.3");

 

有兴趣的话可以运行下面的代码测试一下

<script type="text/javascript">


 


openDocObj = new ActiveXObject("SharePoint.OpenDocuments.2");


 


openDocObj.CreateNewDocument("http://www.abc.com/documents/sampleTemplate.dot", "http://www.abc.com/documents/");


 


</script>


 


.codearea{ color:black; background-color:white; line-height:18px; border:1px solid #4f81bd; margin:0; width:auto !important; width:100%; overflow:auto; text-align:left; font-size:12px; font-family: "Courier New","Consolas","Fixedsys","BitStream Vera Sans Mono", courier,monospace,serif}
.codearea pre{ color:black; line-height:18px; padding:0 0 0 12px !important; margin:0em; background-color:#fff !important}
.linewrap pre{white-space:pre-wrap; white-space:-moz-pre-wrap; white-space:-pre-wrap; white-space:-o-pre-wrap; word-wrap:break-word; word-break:normal}
.codearea pre.alt{ background-color:#f7f7ff !important}
.codearea .lnum{color:#4f81bd;line-height:18px}

 

.codearea{ color:black; background-color:white; line-height:18px; border:1px solid #4f81bd; margin:0; width:auto !important; width:100%; overflow:auto; text-align:left; font-size:12px; font-family: "Courier New","Consolas","Fixedsys","BitStream Vera Sans Mono", courier,monospace,serif}
.codearea pre{ color:black; line-height:18px; padding:0 0 0 12px !important; margin:0em; background-color:#fff !important}
.linewrap pre{white-space:pre-wrap; white-space:-moz-pre-wrap; white-space:-pre-wrap; white-space:-o-pre-wrap; word-wrap:break-word; word-break:normal}
.codearea pre.alt{ background-color:#f7f7ff !important}
.codearea .lnum{color:#4f81bd;line-height:18px}

因为我们无法控制客户端是否安装了哪个版本的office,以及不同版本的office带来的问题,所以统一将新建文档的步骤都放在浏览器中进行,如图:





 

像这种功能微软应该会想到,所以其实我们可以在网站集功能中找到相关的设置:





 

首先要保证sharepoint网站开启了office web apps

然后把默认情况下,在客户端应用程序中打开文档停用掉。

为了保证成功率,再iisreset一下.

 

不过我在操作这个地方的时候出现问题了,这些步骤看上去仿佛都很完美,按道理说经过这些步骤后,web office 应该会忽略客户端office的调用,但是事与愿违,“星星还是那个星星,月亮还是那个月亮”,它还是调用客户端的office,汗!(不清楚这个情况到底是个例,还是这个问题是微软的一个bug,将来可能会修复)

 

既然按正常方式无效,那我们就自己改吧

 

其实在新建文档的时候,调用了core.js里面的一个函数

function createNewDocumentWithRedirect(e, a, b, f, d, g, c) {


a: ;


if (g)


if (IsClientAppInstalled(b))


createNewInClient(e, a, b, f);


else


createNewInBrowser(d, a, c);


else if (IsClientAppInstalled(b) && c != 1)


createNewInClient(e, a, b, f);


else


createNewInBrowser(d, a, c)


}


 


 


.codearea{ color:black; background-color:white; line-height:18px; border:1px solid #4f81bd; margin:0; width:auto !important; width:100%; overflow:auto; text-align:left; font-size:12px; font-family: "Courier New","Consolas","Fixedsys","BitStream Vera Sans Mono", courier,monospace,serif}
.codearea pre{ color:black; line-height:18px; padding:0 0 0 12px !important; margin:0em; background-color:#fff !important}
.linewrap pre{white-space:pre-wrap; white-space:-moz-pre-wrap; white-space:-pre-wrap; white-space:-o-pre-wrap; word-wrap:break-word; word-break:normal}
.codearea pre.alt{ background-color:#f7f7ff !important}
.codearea .lnum{color:#4f81bd;line-height:18px}

 

行了,我们就手动把函数改一下,只留下

createNewInBrowser(d, a, c)

即可。

 

iisreset,OK,问题解决。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: