我在项目目录中的XSLT文件中有以下样式表信息,正在读取此文件并将其存储在HTML的文本区域中,然后我使用javascript读取TextArea。
当我使用 document.getElementByID("TestAreaID").value 读取 IE9+ 浏览器中的文本区域时,它会自动删除命名空间,因此无法在 IE9+ 浏览器中生成 PDF。 当我在调试模式下添加命名空间时,它会在 IE9+ 浏览器中打开。
<textarea id="TestAreaID>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:fo="http://www.w3.org/1999/XSL/Format"
xmlns:fox="http://xmlgraphics.apache.org/fop/extensions"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns:java="http://xml.apache.org/xslt/java"
xmlns:xalan="http://xml.apache.org/xalan"
xmlns:barcode="http://barcode4j.krysalis.org/ns"
xmlns:pagematrix="http://phi.thc.com/pagematrix"
xmlns:math="xalan://java.lang.Math" extension-element-prefixes="math" version="1.1">
<xsl:output method="xml" omit-xml-declaration="no" indent="yes" version="1.0" doctype-system="http://www.w3.org/TR/2000/CR-SVG-20000802/DTD/svg-20000802.dtd" doctype-public="-//W3C//DTD SVG 20000802//EN"/>
</textarea>
使用 document.getElementByID("TestAreaID").value 读取 javascript 中的文本区域后,仅返回以下信息
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" extension-element-prefixes="math" version="1.1">
<xsl:output method="xml" omit-xml-declaration="no" indent="yes" version="1.0" doctype-system="http://www.w3.org/TR/2000/CR-SVG-20000802/DTD/svg-20000802.dtd" doctype-public="-//W3C//DTD SVG 20000802//EN"/>
我很困惑为什么它没有完全读取 TextArea 值并省略一些命名空间,但它在 Chrome、FireFox 和 IE8 浏览器中运行良好。
下面是 HTML 代码
<textarea id="TestAreaID" name="TestAreaID_index_0" style="display:none">
$formInputData.getField("PrintControl").getValue()
</textarea>
getField() 是一个读取并返回 xsl 文件内容的静态方法,它正确返回 xsl 文件内容,但是当我在 javascript 命名空间中读取它时
被删除这就是我们在javascript部分中所拥有的
var xmlText = document.getElementById("TestAreaID").value;
xmlText = xmlText.replace(/~1/g, "~"); // This gets set back to ampersand later
xmlText = xmlText.replace(/~2/g, "<");
if (window.DOMParser)
{
parser=new DOMParser();
_xmlDoc=parser.parseFromString(xmlText,"text/xml");
}
else // Internet Explorer
{
_xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
_xmlDoc.async="false";
_xmlDoc.loadXML(xmlText);
}
document.getElementById("TestAreaID").value = xmlText;
我提出的问题在下面的链接中得到了明确的回答
https://dzone.com/articles/domparsers-parsefromstring