gpt4 book ai didi

Javascript 错误 : disk is full

转载 作者:行者123 更新时间:2023-11-28 01:45:49 24 4
gpt4 key购买 nike

关于 Exception "The disk is full " is thrown when trying to store data in usedata object in IE7+一直没有回答:

我正在大量浏览使用 WatiN 使用 Oracle ADF 创建的政府网站。
该网站位于 WPF 窗口 --> WindowsFormsHost --> WebBrowser 控件中。

该网站大量使用:http://msdn.microsoft.com/en-us/library/ie/ms531424(v=vs.85).aspx ,通过保存和加载方法。

浏览 2-3 分钟后,我在“保存”调用之一期间收到以下 javascript 错误:

磁盘已满,字符#,行#### .

当我收到此错误时,WebBrowser 控件将完全无用(无法执行进一步的 javascript 命令)并且我的应用程序必须重新启动。

我试图清除浏览器缓存,更改它的位置,清除localStorage,一切都无济于事。

重现错误的 PC 已安装 IE10,但通过注册表我在 webbrowser 控件中强制使用 IE8/IE9 模式。

有没有办法解决这个问题?

这方面的信息非常稀缺,因此将不胜感激任何帮助。

最佳答案

我在linux上,所以现在没有办法测试这个,但是有问题的文件没有存储在浏览器缓存中,but in

注意:从 IE 10 开始,这不再成立。引用。编辑下面的 2。

W7+: %HOMEPATH%\AppData\Roaming\Microsoft\Internet Explorer\UserData
# c:\users\*user-name*\...

XP : %HOMEPATH%\Application Data\Microsoft\Internet Explorer\UserData
# c:\Documents and Settings\*user-name*\...

或者,我想,这个也可以(作为捷径),:
%APPDATA%\Roaming\Microsoft\Internet Explorer\UserData

修改或删除那里的文件。

请注意,这些文件被标记为 protected 操作系统文件,因此要在资源管理器中查看,您必须更改 View 以包含这些文件。如果您使用 cmd ,如在命令提示符中,您必须包含 /a标志如下:
dir /a

编辑1:

请注意,该 index.dat 是一个保存有关分配大小等信息的文件,因此它不会(可能)仅帮助删除/移动 xml 文件。

编辑2:

好的。在运行 IE 10 的 Windows 7 中查看了这个。

在 IE 7(在 XP 上)中,上述路径具有 index.dat保存时更新的文件 userData .该文件包含各种信息,例如索引文件的大​​小、子文件夹的数量、所有文件的大小。然后为每个文件添加一个条目,其中包含一个数字标识文件夹、保存它的 url、xml 文件的名称、日期等。为此编写了一个简单的 VBScript 解析器,但由于 IE 10 不使用 index.dat文件是浪费。

在 IE 10 下不再有各种 index.dat文件,但中央数据库文件位于:
%APPDATA%\Local\Microsoft\Windows\WebCache\

在我的系统上,数据库文件被命名为 WebCacheV01.dat , V部分似乎在系统之间有所不同,可能是内部版本号而不是文件类型版本。

这些文件被紧紧锁定,因此,如果想戳它们,一种解决方案是制作 shadow copy通过使用 vscsc 等工具, Shadowcopy等等。

无论如何,黑客 WebCacheVxx.dat需要更多的工作,所以我没有尝试(至少现在)。

但是,注册该文件会获得一个带有旧位置路径的条目 - 例如在写 someElement.save("someStorageName"); , WebCacheVxx.dat获得如下条目:
...\AppData\Roaming\Microsoft\Internet Explorer\UserData\DDFFGGHH\someStorageName[1].xml

并在上述路径中创建相应的文件。

本地 container.dat但是,没有更新。

用户数据

至于手头的问题,清除 localStorage无济于事,因为 userData不是该 API 的一部分。

找不到关于如何清除 userData 的好例子.不过,一种方法是使用控制台。

来自 this page 的测试示例:
  • 保存一些文本。
  • 按 F12 并输入以下内容以清除数据:
    /* ud as an acronym for userData */
    var i, at,
    ud_name = "oXMLBranch",
    ud_id = "oPersistText",
    ud = document.getElementById(ud_id);

    /* To modify the storage one have to ensure it is loaded. */
    ud.load(ud_name);

    /* After load, ud should have a xmlDocument where first child should hold
    * the attributes for the storage. Attributes as in named entries.
    *
    * Example: ud.setAttribute("someText", "Some text");
    * ud.save(ud_name);
    *
    * XML-document now has attribute "someText" with value "Some text".
    */
    at = ud.xmlDocument.firstChild.attributes;

    /* Loop attributes and remove each one from userData. */
    for (i = 0; i < at.length; ++i)
    ud.removeAttribute(at[i].nodeName);

    /* Finally update the file by saving the storage. */
    ud.save(ud_name);

  • 或作为单行:
    var ud_name = "oXMLBranch", ud_id = "oPersistText", i, at, ud = document.getElementById(ud_id); ud.load(ud_name); at = ud.xmlDocument.firstChild.attributes; for (i = 0; i < at.length; ++i) ud.removeAttribute(at[i].nodeName); ud.save(ud_name);

    消除一项限制

    这有一些问题。我们可以通过忽略 ud_id 来消除至少一个。而是创建一个新的 DOM 对象:
    var i, at,
    ud_name = "oXMLBranch",
    ud = document.createElement('INPUT');

    /* Needed to extend properties of input to include userData to userdata. */
    ud.style.behavior = 'url(#default#userdata)';

    /* Needed to not get access denied. */
    document.body.appendChild(ud);

    ud.load(ud_name);
    at = ud.xmlDocument.firstChild.attributes;

    for (i = 0; i < at.length; ++i)
    ud.removeAttribute(at[i].nodeName);

    /* Save, or nothing is changed on disk. */
    ud.save(ud_name);

    /* Clean up the DOM tree */
    ud.parentNode.removeChild(ud);

    所以通过这个应该能够通过知道存储名称来清除 userData,这应该与文件名相同(不包括 [1].xml )或通过查看页面源。

    更多问题

    在上面提到的页面上测试我达到了 disk is full限制为 65,506 字节。

    你的问题很可能不是磁盘 已满,但在输入数据超出限制的情况下会进行写入尝试。您可以尝试清除上面提到的数据,看看它是否继续,否则您需要清除即将写入的数据。

    再一次,这很可能会破坏有问题的应用程序。

    换句话说,错误文本应该是这样的:

    NNN 字节的写入超出 NNN 的限制而不是 磁盘已满 .

    通过附加到窗口 onerror 进行测试但不幸的是没有找到错误的来源:
    var x1, x2, x3, x4 ; 
    window.onerror = function () {
    x1 = window.event;
    x2 = x1.fromElement; // Yield null
    x3 = x1.srcElement; // Yield null
    x4 = x1.type;
    };

    尾注

    除非清除 userData 方法解决了问题,否则我不知道下一步该去哪里。没有找到任何通过注册表或其他方式增加限制的选项。

    但也许它能让你走得更远。

    可能有人在 Super User那是有帮助的。

    关于Javascript 错误 : disk is full,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20339806/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com