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


    最近在搞鼓web office apps的时候发现,在新建文档的时候,

    image

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

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

    clip_image002

    调用客户端的代码实际是跟下面三个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>
     

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

    clip_image002[6]

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

    image

    首先要保证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)
    }
     
     

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

    createNewInBrowser(d, a, c)

    即可。

    iisreset,OK,问题解决。

  • 相关阅读:
    python中的赋值与深浅拷贝
    PAT甲级:1089 Insert or Merge (25分)
    PAT甲级:1064 Complete Binary Search Tree (30分)
    navicat 15 破解教程
    SQL
    以初学者的角度理解:SQL实现关系除法
    线性回归与梯度下降(ML作业)
    海明码
    CRC校验原理
    Jupyter notebook总是卡在int[*]怎么解决?
  • 原文地址:https://www.cnblogs.com/poissonnotes/p/2366424.html
Copyright © 2020-2023  润新知