document.write
не работает, но настройка innerHTML
все еще работает. Просто помните, что все, что вы там поставили, должно быть хорошо сформировано.
Это означает, что вы можете использовать jQuery для добавления нового элемента / установки html в любой элемент.
У меня есть небольшая библиотека для этого. Это работает совсем немного.
function IsXHTML() {
if (document.doctype == null)
return false;
var vPublic = document.doctype.publicId.replace(/^.*(.html).*$/i, '$1').toLowerCase();
var vSystem = document.doctype.systemId.replace(/^.*(.html).*$/i, '$1').toLowerCase();
return (vPublic == 'xhtml')
&& (vSystem == 'xhtml');
};
function XHTMLDocWrite($Str, $Element) {
if ($Str == null)
return;
var vIsMozilla = !window.opera && !/Apple/.test(navigator.vendor);
var vIsOpera = window.opera;
// Make sure &s are formatted properly
if (!vIsOpera)
$Str = $Str.replace(/&(?![#a-z0-9]+;)/g, "&");
else $Str = $Str.replace(/&(?![#a-z0-9]+;)/g, "&");
// - Mozilla assumes that everything in XHTML, innerHTML is actually XHTML
// - Opera and Safari assume that it's XML
if ( !vIsMozilla )
$Str = $Str.replace(/(<[a-z]+)/g, "$1 xmlns='http://www.w3.org/1999/xhtml'");
// The HTML needs to be within a XHTML element
var vDiv = document.createElementNS("http://www.w3.org/1999/xhtml","div");
vDiv.innerHTML = $Str;
if ($Element == null) {
// Find the last element in the document
var vLastElmt = document.getElementsByTagName("*");
vLastElmt = vLastElmt[vLastElmt.length - 1];
$Element = vLastElmt;
}
// Add all the nodes in that position
var vNodes = vDiv.childNodes;
while (vNodes.length)
$Element.parentNode.appendChild( vNodes[0] );
};
function UseXHTMLDocWrite($IsForced) {
if (!IsXHTML() && !$IsForced)
return;
if (document.write == XHTMLDocWrite)
return;
document.write = XHTMLDocWrite;
};
Вы запускаете UseXHTMLDocWrite
, поэтому document.write
будет заменено на XHTMLDocWrite
, если необходимо.
Это просто добавит контент к последнему добавленному элементу. Однако он не работает с вложенным элементом.
ПРИМЕЧАНИЕ. Я изменяю код XHTMLDocWrite
из кода, который я получил из Интернета, и, похоже, больше не могу его найти. Извините, я не могу поверить ему.
Надеюсь, это поможет.