大约一年半前,我使用OfficeJS API编写了一个Excel加载项,它一直工作到大约两周前。看起来Excel已经更新了,现在我可以右键单击任务窗格并查看开发工具,以前我不能这样做,必须运行外部MS Edge devtools应用程序进行调试。这似乎是一个相对较新的问题,我似乎找不到任何有关它的信息。我尝试将MS Edge的跟踪预防设置降低到基本设置,如下所示:
我给了www.example.com javascript权限,因为devtools说它在控制台中阻止了这个文件,特别是https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js。appsforoffice.microsoft.com我还添加了localhost,因为这也发生在我的计算机本地。我似乎不能在Excel中专门更改任何阻止设置,但我的假设是Excel为加载项运行Edge的示例,因为我可以在Edge devtools中跟踪它。 I also added localhost since this is happening locally on my computer too. I can't seem to change any blocking settings in Excel specifically, but my assumption is that excel runs an instance of Edge for the add-in since I can track it in Edge devtools.
我读了https://learn.microsoft.com/en-us/microsoft-edge/web-platform/tracking-prevention的文章,想看看我能做些什么改变,但这里没有一个解决方案对我有用。看起来Edge的设置没有被读入Excel,所以它总是阻止任何试图从localStorage/sessionStorage读取的应用程序。
我在我的加载项中使用sessionStorage来写入数据以进行读回,并尝试了localStorage,但我仍然得到相同的错误。
更奇怪的是,我试图读取的数据来自我写入存储的数据,当我查看devtools中的存储选项卡时,可以看到它已经写入,没有问题,所以问题仅限于从存储中读取。
有没有人知道需要在哪里对跟踪进行更改,以便Excel加载项能够从存储中读取,如果这些更改没有从MS Edge更新,或者最近Excel发布了一个新的错误?
编辑:为了更清楚地了解确切的问题,我的插件基本上是从单元格中读取文本和值,并基于我为用户定义的标签,这些值将在包含用户想要生成的标签的HTML元素中输出。例如,当用户想要一个段落时,他们可以用/para和/end para标记单元格,以及将在HTML段落标记中输出的行/单元格中的任何文本和值。他们也可以像这样构建HTML表格。在读取文本和值的过程中,所有这些都被构建成一个名为previewString
的字符串,我将其存储在sessionStorage中,以便Dialog窗口可以打开并从sessionStorage读取previewString
,并将其作为用户想要生成的完整HTML。所有这一切已经工作了大约一年半,但现在当尝试生成HTML时,我可以看到字符串存储在sessionStorage中,如下面的屏幕截图所示:
但是,当对话框窗口打开时,数据不在sessionStorage中,因此无法读取,并且仍然存在错误Tracking Prevention blocked access to storage for https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js以及Permission Denied错误。
previewString
在此对话框的会话存储选项卡中不可用
第二次编辑:我搜索了控制台给OSF.DDA.ERROR code 7000, permission denied
的错误代码,在SO Office JS Api - Permission Denied Issue上找到了这篇文章。这似乎是过去的一个错误,但我不确定是否再次出现这种情况。
1条答案
按热度按时间qv7cva1a1#
最近,我也面临着同样的问题,我得到了
OSF.DDA.ERROR
和“跟踪预防阻止访问存储”错误。我在代码中添加了一个
setTimeout(function(){},1000)
,并在其中编写了Office特定的代码,之后就解决了这个问题。添加
setTimeout()
帮助我解决了这个问题。我也试过Office.onReady
,但对我不起作用。它正在尝试在完全加载之前访问Office特定功能。