Поддерживает ли JavaScript document.open параметр MIME-типа?
В некоторых документах показано, что document.open()
поддерживает выбор типа MIME в качестве первого параметра. Например: HTML DOM Open Method (Dottoro).
У меня также есть древний учебник по JavaScript, который утверждает, что вы можете передавать типы MIME в document.open().
Но большинство документов, на которые я смотрю, говорят иначе:
Этот параметр поддерживался в раннем JavaScript, который с тех пор был удален?
Я не вижу его в спецификациях DOM:
Это только для моих интересов; У меня нет конкретного варианта использования для параметра.
Ответы
Ответ 1
Хром
Chrome не использует параметр type
.
V8Document.openMethod()
проверяет воздушность аргументов document.open(...)
затем вызывает либо v8Document.open1Method()
либо v8Document.open2Method()
. v8Document.open2Method()
даже не читает первый (type
) аргумент, который он предоставил. v8Document.open1Method()
выполняет его чтение и устанавливает значение по умолчанию "text/html"
если оно не определено. Затем он передает значение type
методу Document.open()
, но оттуда он игнорируется.
Fire Fox
Firefox использует параметр type
, но единственным принятым значением, отличным от значения по умолчанию, является "text/plain"
.
nsHTMLDocument::Open()
задает type
"text/html"
если аргумент отсутствует, а затем вызывает другую перегрузку. Перегрузка преобразует все значения type
отличные от "text/html"
в "text/plain"
, а затем применяет этот тип содержимого к документу.
обнаружение
Свойство .contentType
может указать нам тип document
у нас есть. Мы не можем использовать это для обнаружения функции заранее, но мы можем использовать его для проверки того, какой тип документа был фактически открыт, и соответствующим образом изменить наш вывод. Например:
setTimeout(function() {
document.open('text/plain');
if (document.contentType == 'text/plain') {
document.write("I'm text/plain! :-D");
} else if (document.contentType == 'text/html') {
document.write("I'm <code>text/html</code>. :-(");
} else {
document.write("I'm confused! Also: " + document.contentType);
}
document.close();
});
Ответ 2
В некотором контексте: document.write и document.open есть некоторые проблемы, и по этой причине их использование не рекомендуется. Видеть
https://developers.google.com/web/updates/2016/08/removing-document-write https://www.sitepoint.com/insert-in-place-without-documentwrite/
Это старый API DOM, и в тот же день разработчик браузера не был скоординирован, как сегодня, при реализации спецификации w3. (который был ссылкой в это время, в настоящее время это больше whatwg)
Так что, возможно, есть какой-то браузер, у которого есть параметр MIME действительно для document.open, но, полагаясь на него, иногда может возникать ошибка. Так что это ненадежно. При необходимости используйте альтернативы. На самом деле он может быть удален полностью в один прекрасный день. Он не существует в последнем домене whatwg spec https://dom.spec.whatwg.org/
Ответ: Это зависит от браузера. Из предоставленной ссылки dottoro кажется, что Safari и Chrome никогда не поддерживали ее.
Чтобы быть технически корректным, это не API JavaScript, а DOM.