Xsl transformToDocument不能在chrome浏览器中工作,但可以在firefox中工作

Xsl transformToDocument is not working in chrome browser but working in firefox

本文关键字:工作 但可以 firefox 浏览器 transformToDocument 不能 chrome Xsl      更新时间:2023-09-26

我通过调用URL获得xsl,并解析我使用下面的代码片段的xml。

var xslt = getXSLTemplate(xslUri, params, xmlDoc);
    if (!xslt) {
        xslt = createXSLTemplateGeneric(xslUri, params, xmlDoc);
        if (xslt) {
            putXSLTemplate(xslUri, xslt);
        }
    }
    if (xslt) {
        xslt.clearParameters();
        var paramName = params[0];
        var paramValue = params[1];
        var result = "";
        for (var paramIdx = 0; paramIdx < paramName.length; paramIdx++) {
            xslt
                    .setParameter("", paramName[paramIdx],
                            paramValue[paramIdx]);
        }
        var transformDoc = xslt.transformToDocument(xmlDoc);
        var xmlSerializer = new XMLSerializer();
        if (transformDoc.firstChild != null) {
            var nodes = transformDoc.lastChild.childNodes;
            for (var i = 0; nodes[i]; ++i) {
                result += xmlSerializer.serializeToString(nodes[i]);
            }
            result = transformDoc.lastChild.xml;
        }
        return result;
    }

但是这段代码在firefox中工作,而在chrome中不工作。请让我知道我在解析文档时犯了什么错误,或者请让我知道上面的描述是否不足以进行分析。

我在chrome中得到的结果如下

<div xmlns="http://www.w3.org/1999/xhtml" id="alertMessages" style="width:400px;"></div>

在firefox中我得到了正确的结果。

<table xmlns='"http://www.w3.org/1999/xhtml'" cellspacing='"0'" cellpadding='"0'" border='"0'" class='"panelContentTbl'" style='"margin-left:14px; margin-top:14px;'"><tbody><tr><td valign='"top'"><script id='"doLogin'" cancelifviewbusy='"'">try{ if(getFormInputByName('"loginButton'").disabled == false){ var name = trimAll(getFormInputByName('"username'").value); var pwd = trimAll(getFormInputByName('"password'").value); if(name.length &gt; 0 &amp;&amp; pwd.length &gt; 0){   disableButton('"loginButton'"); displayClientStatus('"Authenticating user...'");  var nameArray = new Array(); var typeArray = new Array(); var valueArray = new Array();   nameArray.push('"username'"); typeArray.push(TYPE_ATTRIBUTE); valueArray.push(name);   nameArray.push('"password'"); typeArray.push(TYPE_ATTRIBUTE); valueArray.push(pwd);   loadAsyncPanelAction('"loginWidget'", getActionUri('client', 'login'), nameArray, typeArray, valueArray, '"checkSecurityAuth(asyncPanelRequest);'");  } else{ panelAlert('"Please enter your user ID and password.'",'"layouts/layout2010.1/xsl/widget/panel/login.xsl'");} } } catch(anErr){ errorAlert('"doLogin'", SEVERITY_HIGH, anErr); } </script><script id='"getPasswordHelp'" cancelifviewbusy='"'">try{ var name = trimAll(getFormInputByName('"username'").value); var nameArray = new Array(); var typeArray = new Array(); var valueArray = new Array(); nameArray.push('"username'"); typeArray.push(TYPE_ATTRIBUTE); valueArray.push(name); displayClientStatus('"Loading password assistant...'");loadAsyncPanelAction('"loginWidget'", getActionUri('layout.widget', 'get-password-help'), nameArray, typeArray, valueArray, '"displayClientStatus('');'"); } catch(anErr){ errorAlert('"getPasswordHelp'", SEVERITY_HIGH, anErr); } </script><table cellspacing='"0'" cellpadding='"0'" border='"0'"><tbody><tr><td><div id='"panelHeader'"><table width='"100%'" cellspacing='"0'" cellpadding='"0'" border='"0'"><tbody><tr class='"panelHeader'"><td nowrap='"yes'">User Login</td></tr></tbody></table></div></td></tr><tr><td valign='"top'" style='"padding:10px;'"><div id='"panel'" style='"330px'"><div style='"white-space:normal;'"><instructions><span>Please enter your user ID and password.</span></instructions></div><div class='"inputHeader'"></div><eventhandler id='"initContent'" handler='"var fi = getFormInputByName('username'); if (null != fi) fi.focus();'"> </eventhandler><table cellspacing='"1'" cellpadding='"0'" border='"0'" class='"panelForm'" id='"loginForm'"><tbody><tr><td id='"panelLabel'" style='"width:120px;'">User ID *</td><td nowrap='"true'" id='"panelValue'" style='"width:120;'"><input type='"text'" id='"inputProperty'" class='"inputText'" name='"username'" size='"30'" required='"FALSE'" onselectstart='"setSelectable(this,true,event);'" ondragenter='"event.returnValue = false;'" value='"'" style='"-moz-user-select:text;width:175pxpx;'" onkeypress='"clickButtonOnEnter(event, 'loginButton');'" /></td></tr><tr><td id='"panelLabel'" style='"width:120px;'">Password *</td><td nowrap='"true'" id='"panelValue'" style='"width:120;'"><input type='"password'" class='"inputText'" name='"password-display'" size='"30'" value='"'" onselectstart='"setSelectable(this,true,event);'" ondragenter='"event.returnValue = false;'" style='"-moz-user-select:text;width:175pxpx;'" onchange='"getFormInputByName('password').value = this.value;'" onkeypress='"clickButtonOnEnter(event, 'loginButton');'" /><input type='"hidden'" id='"inputProperty'" name='"password'" value='"'" /><eventhandler id='"resizeContent'" handler='"var pwd1 = getFormInputByName('password-display'); var pwd2 = getFormInputByName('password'); if (null != pwd1 &amp;&amp; null != pwd2) pwd1.value = pwd2.value;'"> </eventhandler></td></tr><tr><td id='"panelLabel'"> </td><td id='"panelValue'"><table cellspacing='"0'" cellpadding='"0'" border='"0'"><tbody><tr><td nowrap='"nowrap'" style='"padding-right:6px;'"><input type='"submit'" id='"button'" name='"loginButton'" value='"Login'" title='"'" style='"width:70px;'" class='"panelButton'" onclick='"'n                            if(jQuery(this).hasClass('buttonDisabled') ||'n                            jQuery(this).hasClass('jQueryDisabled')) return;'n                            fireScript('doLogin'); '" /></td></tr></tbody></table></td></tr></tbody></table><div align='"right'"><table><tbody><tr><td align='"right'"><a class='"blue'" style='"padding-top:8px; cursor:pointer; white-space:nowrap;'" onclick='"fireScript('getPasswordHelp');'">Forgot your password?</a></td></tr></tbody></table></div></div></td></tr><tr><td valign='"top'" height='"100%'" style='"text-align:center;'" id='"clientStatus'"></td></tr></tbody></table></td></tr></tbody></table>

浏览器中没有任何崩溃或错误

这可能取决于您实际如何获取文档xmlDoc。如果使用ajax检索文档DOES返回xhttp.responseXMLDOES NOT返回xhttp.responseXML.documentElement

两者都可以使用XMLSerializer转换为文档的有意义的表示形式,但只有第一个语句是XSL转换的可行参数。

如果使用后者,则XSLTransformation的返回值(使用toDocument或toFragment函数)在我的情况下为空(使用Chrome)

相关文章: