JavaScript的document.open是否支持MIME类型参数?

时间:2016-08-30 17:09:18

标签: javascript dom document

有些文档表明document.open()支持将MIME类型作为其第一个参数。例如:HTML DOM Open Method (Dottoro)

我还有一本古老的JavaScript教科书,声称你可以将MIME类型传递给document.open().但我看到的大多数文档都说不然:

这是早期JavaScript支持哪个参数已被删除?

我在DOM规范中没有看到它:

这只是为了我的兴趣;我没有参数的具体用例。

3 个答案:

答案 0 :(得分:5)

Chrome不使用 <Segment style={{overflow: 'auto', maxHeight: 200 }}> </Segment> 参数。

type方法检查V8Document.openMethod()的参数的空间性,然后调用document.open(...)v8Document.open1Method()v8Document.open2Method()甚至没有阅读它提供的第一个(v8Document.open2Method())参数。 type会读取它,如果未定义,则将其设置为默认值v8Document.open1Method()。然后它会将"text/html"值传递给type方法,但从那里它被忽略。

火狐

Firefox使用Document.open()参数,但唯一接受的非默认值为type

如果参数丢失,"text/plain"方法会将nsHTMLDocument::Open()设置为type,然后调用另一个重载。重载会将"text/html"以外的所有type值转换为"text/html",然后将该内容类型应用于文档。

检测

"text/plain"属性可以告诉我们.contentType的类型。我们不能提前使用它来进行特征检测,但我们可以用它来检查文档实际打开的类型,并相应地修改我们的输出。例如:

&#13;
&#13;
document
&#13;
&#13;
&#13;

答案 1 :(得分:0)

您可以在放置为链接的编码URL中指定mime类型。

buffer = ...
var blob = new Blob([buffer], {type: 'text/plain'})
var dataUri = window.URL.createObjectURL(blob)
window.open(dataUri)

答案 2 :(得分:-1)

某些上下文:document.write和document.open存在一些问题,因此不鼓励使用它们。见

https://developers.google.com/web/updates/2016/08/removing-document-write https://www.sitepoint.com/insert-in-place-without-documentwrite/

这是一个旧的DOM API,并且在当天的浏览器制造商中没有像今天那样协调实施w3规范。 (这是当时的参考,现在它更像是什么)

因此可能有一些浏览器确实为document.open设置了MIME参数,但依赖它可能会导致错误。所以它不可靠。尽可能使用替代品。实际上有一天它可能会完全被删除。它在最后一个dom whatwg spec https://dom.spec.whatwg.org/

中不存在

答案是:取决于浏览器。从提供的dottoro链接看来,Safari和Chrome似乎从不支持它。

从技术上讲,它不是JavaScript API,而是DOM。