Javascript错误:磁盘已满
关于未回答的问题: 我正在大量浏览一个使用WatiN的Oracle ADF创建的政府网站。 该网站位于WPF窗口-->WindowsFormsHost-->WebBrowser控件中 该网站通过保存和加载方法大量使用此: 浏览2-3分钟后,我在其中一个“save”调用中出现以下javascript错误: 磁盘已满,字符#,行#### 当我遇到这个错误时,WebBrowser控件将变得完全无用(不能再执行javascript命令),我的应用程序必须重新启动 我试图清除浏览器缓存,更改其位置,清除本地存储,但一切都无济于事 复制错误的PC已安装IE10,但通过注册表,我强制webbrowser控件中的IE8/IE9模式 有没有办法解决这个问题Javascript错误:磁盘已满,javascript,wpf,webbrowser-control,disk,user-data,Javascript,Wpf,Webbrowser Control,Disk,User Data,关于未回答的问题: 我正在大量浏览一个使用WatiN的Oracle ADF创建的政府网站。 该网站位于WPF窗口-->WindowsFormsHost-->WebBrowser控件中 该网站通过保存和加载方法大量使用此: 浏览2-3分钟后,我在其中一个“save”调用中出现以下javascript错误: 磁盘已满,字符#,行#### 当我遇到这个错误时,WebBrowser控件将变得完全无用(不能再执行javascript命令),我的应用程序必须重新启动 我试图清除浏览器缓存,更改其位置,清除本
关于这方面的信息非常稀少,因此任何帮助都将不胜感激。我在linux上,因此现在无法测试这一点,但所涉及的文件没有存储在浏览器缓存中 注:从IE 10开始,这不再有效。参考下面的编辑2 或者,我想,这一条同样有效(作为一条捷径): 修改或删除那里的文件 请注意,这些文件被标记为受保护的操作系统文件,因此要在资源管理器中查看,必须更改视图以包含这些文件。如果在命令提示符中使用
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
部分似乎有所不同,可能是内部版本号,而不是文件类型版本
这些文件被紧紧地锁定,因此,如果你想戳它们,一个解决方案是使用诸如等工具制作一个文件
无论如何,黑客WebCacheVxx.dat
需要做更多的工作,所以我没有尝试过(至少现在)
但是,请注册文件获得一个带有旧位置路径的条目–例如,在写入someElement.save(“someStorageName”)时
,WebCacheVxx.dat
获取如下条目:
...\AppData\Roaming\Microsoft\Internet Explorer\UserData\DDFFGGHH\someStorageName[1].xml
并在上述路径中创建相应的文件
但是,本地容器.dat
不会更新
用户数据 至于手头的问题,清除
localStorage
不会有帮助,因为userData
不是该API的一部分
找不到关于如何清除userData
的好例子。不过,一种方法是使用控制台
测试的示例:
/* 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);
因此,通过这种方式,用户应该能够通过知道存储的名称(该名称应与文件名相同)(不包括[1].xml
)或查看页面源代码来清除用户数据
更多问题 在上面提到的页面上进行测试时,我发现
磁盘已满
限制为65506字节
您的问题可能不是磁盘已满,而是在输入数据超出限制的情况下进行了写入尝试。您可以尝试清除上面提到的数据,看看它是否继续,否则您需要清除即将写入的数据
然后,这很可能会破坏所讨论的应用程序
换句话说,错误文本应该是这样的:
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;
};
尾注 除非clear userData方法解决了这个问题,否则我不知道下一步该怎么做。未找到任何通过注册或其他方式增加限额的选项 但也许它能让你走得更远一点
可能有人能帮上忙。我在linux上,所以现在无法测试这一点,但相关文件未存储在浏览器缓存中 注:从IE 10开始,这不再有效。参考下面的编辑2 或者,我想,这一条同样有效(作为一条捷径): 修改或删除那里的文件 请注意,这些文件被标记为受保护的操作系统文件,因此要在资源管理器中查看,必须更改视图以包含这些文件。如果在命令提示符中使用
cmd
,则必须包括/a
标志,如下所示:
dir /a
编辑1: 请注意,index.dat是一个保存有关已分配大小等信息的文件,因此(可能)仅删除/移动xml文件没有帮助 编辑2: 嗯。在运行IE 10的Windows 7中查看了这一点 在IE 7(在XP上)中,上述路径有一个
index.dat
文件,该文件在保存时由userData
更新。该文件包含各种信息,例如索引文件的大小、子文件夹的数量、所有文件的大小。然后,每个文件的一个条目都有一个编号,标识文件夹、保存它的url、xml文件名、日期等。为此编写了一个简单的VBScript解析器,但由于IE 10不使用索引。
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);
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);
var x1, x2, x3, x4 ;
window.onerror = function () {
x1 = window.event;
x2 = x1.fromElement; // Yield null
x3 = x1.srcElement; // Yield null
x4 = x1.type;
};