我正在尝试使用ActiveXObject,如下所示
getActiveXObject(pdfCtrl) {
return new ActiveXObject(pdfCtrl);
}
checkPDF() {
let plugin = null;
if (this.getBrowser() === 'ie') {
plugin = this.getActiveXObject('AcroPDF.PDF') || this.getActiveXObject('PDF.PdfCtrl');
}
return plugin;
}
它会给出像ActiveXObject not found这样的错误。在普通的JS中,这是可行的,但在Angular/typesript编译阶段,它会抛出错误。我该怎么处理呢?
发布于 2018-06-29 20:45:58
msxml - ActiveXObject的示例仅在IE中可用,在Chrome中使用原生方法:
import * as ts from "typescript";
...
private loadMsXml(src: string): any {
let code: string = `({
Run: (data: string): any => {
let doc = new ActiveXObject("Msxml2.DOMDocument.6.0");
doc.async = false;
doc.loadXML(data);
return doc;
})`;
const e = eval;
let result = ts.transpile(code);
let runnalbe: any = e(result);
return runnalbe.Run(src);
}
private transformXml(xmlDoc: any, xsltDoc: any): string {
if (this.isBrowserIE()) {
let xmlDocMS = this.loadMsXml(new XMLSerializer().serializeToString(xmlDoc));
let xslDocMS = this.loadMsXml(new XMLSerializer().serializeToString(xsltDoc));
let resultXml = xmlDocMS.transformNode(xslDocMS);
return resultXml;
}
let xsltProcessor = new XSLTProcessor();
xsltProcessor.importStylesheet(xsltDoc);
let resultDoc = xsltProcessor.transformToDocument(xmlDoc);
let resultXml = new XMLSerializer().serializeToString(resultDoc);
return resultXml;
}
https://stackoverflow.com/questions/48424563
复制相似问题