Fra*_* A. 7 javascript session-storage excel-addins office-js
大约一年半前,我使用 OfficeJS API 编写了一个 Excel 加载项,它一直工作到大约两周前。Excel 似乎已经进行了更新,现在我可以右键单击任务窗格并查看开发工具,而以前我无法做到这一点,并且必须运行外部 MS Edge 开发工具应用程序进行调试。这似乎是一个相对较新的问题,我似乎找不到任何有关它的信息。我尝试将 MS Edge 的跟踪预防设置减少为基本设置,如下所示:
我向 appsforoffice.microsoft.com 授予了 javascript 权限,因为 devtools 说它正在阻止此文件,特别是控制台中的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,以了解我可以更改什么,但这里的解决方案都不适合我。看起来 Edge 的设置几乎没有被读入 Excel,因此它总是阻止任何尝试从 localStorage/sessionStorage 读取数据的应用程序。
我在加载项中使用 sessionStorage 来写入数据以进行读回,并尝试了 localStorage,但我仍然遇到相同的错误。
更奇怪的是,我试图读出的数据来自我写入存储的数据,当我查看 devtools 中的存储选项卡时可以看到它的写入没有问题,因此问题仅限于读取存储。
有谁知道如果这些更改没有从 MS Edge 更新或者最近与 Excel 一起发布了一个新错误,则需要在哪里对跟踪进行更改才能使 Excel 加载项能够从存储中读取数据?
编辑:为了更清楚地了解确切的问题,我的添加基本上从单元格中读取文本和值,并根据我为用户定义的标签,这些值将在包含用户想要的标签的 HTML 元素中输出产生。例如,当用户想要一个段落时,他们可以使用 /para 和 /end para 标记单元格,并且其间的行/单元格中的任何文本和值都将在 HTML 段落标记中输出。他们还可以构建这样的 HTML 表格。在读取文本和值的过程中,这一切都会构建成一个名为previewString我存储在 sessionStorage 中的字符串,以便可以打开一个对话框窗口并previewString从 sessionStorage 中读取,并且将成为用户想要生成的完整 HTML。所有这些现在已经工作了大约一年半,但现在当尝试生成 HTML 时,我可以看到该字符串存储在 sessionStorage 中,如下面的屏幕截图所示:
但是,当对话框窗口打开时,数据不在 sessionStorage 中,因此无法读取,并且仍然出现错误“跟踪预防阻止访问https://appsforoffice.microsoft.com/lib/1.1/hosted ”的存储/office.js以及权限被拒绝错误。
previewString在此对话框的 sessionStorage 选项卡中不可用
第二次编辑:我搜索了控制台给出的错误代码OSF.DDA.ERROR code 7000, permission denied,并在 SO Office JS Api - Permission Denied Issue上找到了这篇文章。这似乎是过去的一个错误,但我不确定是否再次出现这种情况。
小智 0
最近,我也遇到了同样的问题,即出现OSF.DDA.ERROR“跟踪预防阻止访问存储”错误。
setTimeout(function(){},1000)在将 a 添加到我的代码并在其中写入我的 Office 特定代码后,我能够解决它。
添加setTimeout()帮助我解决了这个问题。我也尝试过Office.onReady,但这对我不起作用。
它正在尝试在完全加载之前访问 Office 特定功能。
| 归档时间: |
|
| 查看次数: |
13694 次 |
| 最近记录: |