localStorage 不支持,怎么可以打开?

使用问题 · 145 次浏览
epodak 创建于 2024-02-15 12:43

Uncaught DOMException: Failed to read the 'localStorage' property from 'Window': Access is denied for this document.
    at restoreBoardState (about:blank:371:34)
    at HTMLDocument.<anonymous> (about:blank:241:9)


回复内容
CL 2024-02-15 20:00
#1
回复 epodak :

如果是网址的问题的话,我的这种方式怎么给到网址呢?
我想要实现的时无边框网页.
虚拟主机怎么设置都会提示错误.

内容写入文件(假设为 d:/sample/file.html)以后,在“网址或HTML内容”里,写文件的URL,类似下面的格式:

file:///d:/sample/file.html



CL 2024-02-15 14:44
#2

报错看起来不是普通网页的而是about页面的。打开个普通的网址后试试。

epodak 回复 CL 2024-02-15 17:34 :

epodak 最后更新于 2024-02-15 20:32
CL 回复 epodak 2024-02-15 18:51 :

将内容保存到文件里,然后网址写文件的路径的URL,或者考虑使用“虚拟主机映射”参数,将目录映射为主机名。

epodak 回复 CL 2024-02-15 19:20 :

不是这个问题,这个页面能显示的.
只不过是需要localstorage的时候提示没有权限.
关键是怎么开启localstorage的权限,要是能设置允许第三方cookie就可以了.


CL 回复 epodak 2024-02-15 19:28 :

帮你看的是权限报错问题,不是显示不了的问题。你都没试试...

localstorage API 是基于网址域名的,直接显示HTML内容的方式,没有网址,所以没有权限。

参考:

https://learn.microsoft.com/en-us/microsoft-edge/webview2/concepts/working-with-local-content?tabs=dotnetcsharp 

https://github.com/MicrosoftEdge/WebView2Feedback/issues/530#issuecomment-1104200695 


CL 最后更新于 2024-02-15 19:45
epodak 回复 CL 2024-02-15 19:49 :

我是选择"打开网页并等待加载完成",网页内容放在"html内容"中.
其他未做配置,这样网页能打开,但是js加载的一些东西有问题,具体来说控制台报错就是权限问题.
我查了一下,如果允许第三方cookie可以解决这个问题,但是没在这个部件中看到这个设置.
为什么我要用这种方式呢,因为他可以无边显示网页.
如果直接读取本地硬盘中的html文件是可以的,不过有个标题栏.还有个边框.
所以问题是,如果通过直接加载网页的方式,怎么允许localstorage权限.read the 'localStorage' property from 'Window': Access is denied for this document.

CL 回复 epodak 2024-02-15 19:52 :

结论是,“网址或HTML内容” 参数里直接写html代码的时候,是不支持这些api的。

需要先将代码写入文件,然后在这个参数里写文件url。

epodak 回复 CL 2024-02-15 19:56 :

如果是网址的问题的话,我的这种方式怎么给到网址呢?
我想要实现的时无边框网页.
虚拟主机怎么设置都会提示错误.

epodak 回复 CL 2024-02-15 19:59 :

那就没啥问题了,怎么无边框打开一个本地地址的html文件呢?

epodak 回复 CL 2024-02-15 20:09 :
额,能用了.😓,忙活了半天.
epodak 回复 CL 2024-02-15 20:29 :

public partial class Form1 : Form

{

    [DllImport("user32.dll", SetLastError = true)]

    static extern int SetWindowLong(IntPtr hWnd, int nIndex, int dwNewLong);


    [DllImport("user32.dll")]

    static extern bool UpdateWindow(IntPtr hWnd);


    const int GWL_EXSTYLE = -20;

    const int WS_EX_LAYERED = 0x80000;

    const int WS_EX_TRANSPARENT = 0x20;


    public Form1()

    {

        InitializeComponent();

        // 设置窗口扩展样式为透明

        SetWindowLong(this.Handle, GWL_EXSTYLE, WS_EX_LAYERED | WS_EX_TRANSPARENT);

        UpdateWindow(this.Handle);

    }

}

===
能不能让这个webview透明呢?
CL 回复 epodak 2024-02-15 20:42 :

估计是不行的,你说的透明是什么地方的透明?

epodak 回复 CL 2024-02-15 21:04 :

C:\Program Files (x86)\Microsoft\EdgeWebView\Application\121.0.2277.112\msedgewebview2.exe
让这个透明.
我试了窗口透明工具和pywin32,都无法调节这个窗口的透明度. 可能需要你从调用这个wpf的时候设置.

epodak 回复 CL 2024-02-15 21:10 :

[UWP:如何正确设置和重置 WebView2 的 DefaultBackgroundColor · 问题 #2899 · MicrosoftEdge/WebView2Feedback](https://github.com/MicrosoftEdge/WebView2Feedback/issues/2899)
===
查到这个
两者都建议通过设置环境变量来设置 DefaultBackgroundColor,如下所示:
Environment.SetEnvironmentVariable("WEBVIEW2_DEFAULT_BACKGROUND_COLOR", "0");
麻烦你看下能否实现

CL 回复 epodak 2024-02-15 21:12 :

不行,这类WebView2不支持设置透明度。

epodak 回复 CL 2024-02-15 21:21 :

那quicker还有其他办法显示一个网页,完全透明吗.

CL 回复 epodak 2024-02-15 21:24 :

好像没有,我搜了一下也没找到有方案。

回复主贴