大约一年半前,我使用 OfficeJS API 编写了一个 Excel 加载项,它一直工作到大约两周前。 Excel 似乎已经进行了更新,现在我可以右键单击任务窗格并查看开发工具,而以前我无法做到这一点,并且必须运行外部 MS Edge 开发工具应用程序进行调试。这似乎是一个相对较新的问题,我似乎找不到任何有关它的信息。我尝试将 MS Edge 的跟踪预防设置减少为基本设置,如下所示:
我向 appsforoffice.microsoft.com 授予了 javascript 权限,因为 devtools 说它专门阻止了此文件https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js在控制台中。我还只包含了 microsoft.com 以及该公司的 URL 和 cdn url。我还添加了 localhost,因为这也在我的计算机本地发生。我似乎无法专门更改 Excel 中的任何阻止设置,但我的假设是 Excel 为加载项运行 Edge 实例,因为我可以在 Edge devtools 中跟踪它。
我读了这里找到的文章https://learn.microsoft.com/en-us/microsoft-edge/web-platform/tracking-prevention https://learn.microsoft.com/en-us/microsoft-edge/web-platform/tracking-prevention为了看看我可以改变什么,但这里的解决方案都不适合我。看起来 Edge 的设置几乎没有被读入 Excel,因此它总是阻止任何尝试从 localStorage/sessionStorage 读取数据的应用程序。
我在加载项中使用 sessionStorage 来写入数据以进行读回,并尝试了 localStorage,但我仍然遇到相同的错误。
更奇怪的是,我试图读出的数据来自我写入存储的数据,当我查看开发工具中的存储选项卡时可以看到它的写入没有问题,因此问题仅限于读取存储。
有谁知道如果这些更改没有从 MS Edge 更新或者最近与 Excel 一起发布了一个新错误,则需要在哪里对跟踪进行更改才能使 Excel 加载项能够从存储中读取数据?
编辑:为了更清楚地了解确切的问题,我的添加基本上从单元格中读取文本和值,并根据我为用户定义的标签,这些值将在包含用户想要的标签的 HTML 元素中输出产生。例如,当用户想要一个段落时,他们可以使用 /para 和 /end para 标记单元格,并且其间的行/单元格中的任何文本和值都将在 HTML 段落标记中输出。他们还可以构建这样的 HTML 表格。在读取文本和值的过程中,这一切都被构建成一个名为的字符串previewString
我存储在 sessionStorage 中,以便可以打开和读取对话框窗口previewString
来自 sessionStorage 并将是用户想要生成的完整 HTML。所有这些现在已经工作了大约一年半,但现在当尝试生成 HTML 时,我可以看到该字符串存储在 sessionStorage 中,如下面的屏幕截图所示:
但是,当对话框窗口打开时,数据不在 sessionStorage 中,因此无法读取,并且仍然出现错误 Tracking Prevention Block access to storage forhttps://appsforoffice.microsoft.com/lib/1.1/hosted/office.js https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js以及权限被拒绝错误。
previewString
在此对话框的 sessionStorage 选项卡中不可用
第二次编辑:我搜索了控制台给出的错误代码OSF.DDA.ERROR code 7000, permission denied
并在 SO 上找到了这篇文章Office JS Api - 权限被拒绝问题 https://stackoverflow.com/questions/35810297/office-js-api-permission-denied-issue。这似乎是过去的一个错误,但我不确定是否再次出现这种情况。