- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
据我所知,Firefox 浏览器的“另存为..”功能也使用了此功能,因此我尝试在我的代码中实现此功能。
除了保存的 css 和 javascript 文件外,一切顺利。它们包含奇怪的数字。 Firefox 中的“另存为...”不会执行此操作。我做错了什么吗?
我做了什么:
webBrowserPersist.saveDocument(content.document, file, dir, null, null, null);
我错过了什么吗?我应该更改 MIME 或编码标志吗? (顺便说一下这第4个和第5个参数我没看懂)
提前致谢。
最佳答案
第四个参数用于放置编码标志。因此,从上面的页面(我们寻找其中包含单词编码的标志),我们可以像这样传递给它:
persist = Components.classes["@mozilla.org/embedding/browser/nsWebBrowserPersist;1"].createInstance(Components.interfaces.nsIWebBrowserPersist);
persist.saveDocument(gBrowser.contentDocument, localFile, dataPath, persist.ENCODE_FLAGS_ENCODE_BASIC_ENTITIES, null, null);
第五是它的格式化标志。我们可以通过按位或运算符连接它们来使用多个,例如:
persist = Components.classes["@mozilla.org/embedding/browser/nsWebBrowserPersist;1"].createInstance(Components.interfaces.nsIWebBrowserPersist);
persist.saveDocument(gBrowser.contentDocument, localFile, dataPath, null, persist.PERSIST_FLAGS_FORCE_ALLOW_COOKIES | persist.PERSIST_FLAGS_BYPASS_CACHE, null);
诸如此类
最后一个参数是关于如何包装它的。我想有一些包装标志。也许尝试传递一个数字。
工作示例:
var file = "c:\\test2.htm";
var data = "c:\\test2_data";
localFile = Components.classes["@mozilla.org/file/local;1"]
.createInstance(Components.interfaces.nsILocalFile);
localFile.initWithPath(file)
dataPath = Components.classes["@mozilla.org/file/local;1"]
.createInstance(Components.interfaces.nsILocalFile)
dataPath.initWithPath(data)
persist = Components.classes["@mozilla.org/embedding/browser/nsWebBrowserPersist;1"]
.createInstance(Components.interfaces.nsIWebBrowserPersist);
persist.saveDocument(gBrowser.contentDocument, localFile, dataPath, null, null, null);
顺便说一句,这就是 save us 功能在菜单中使用的内容:
/*
function saveDocument(aDocument, aSkipPrompt)
{
if (!aDocument)
throw "Must have a document when calling saveDocument";
// We want to use cached data because the document is currently visible.
var ifreq =
aDocument.defaultView
.QueryInterface(Components.interfaces.nsIInterfaceRequestor);
var contentDisposition = null;
try {
contentDisposition =
ifreq.getInterface(Components.interfaces.nsIDOMWindowUtils)
.getDocumentMetadata("content-disposition");
} catch (ex) {
// Failure to get a content-disposition is ok
}
var cacheKey = null;
try {
cacheKey =
ifreq.getInterface(Components.interfaces.nsIWebNavigation)
.QueryInterface(Components.interfaces.nsIWebPageDescriptor);
} catch (ex) {
// We might not find it in the cache. Oh, well.
}
internalSave(aDocument.location.href, aDocument, null, contentDisposition,
aDocument.contentType, false, null, null,
aDocument.referrer ? makeURI(aDocument.referrer) : null,
aDocument, aSkipPrompt, cacheKey);
}
*/
保存文档(gBrowser.contentDocument, true)
这是保存菜单项使用的功能。
关于javascript - 来自 NSIWebBrowserPersist 的 saveDocument() 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24570831/
据我所知,Firefox 浏览器的“另存为..”功能也使用了此功能,因此我尝试在我的代码中实现此功能。 除了保存的 css 和 javascript 文件外,一切顺利。它们包含奇怪的数字。 Firef
我是一名优秀的程序员,十分优秀!