有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

javascript Xsl transformToDocument不适用于chrome浏览器,但适用于firefox

我通过调用一个URL来获取xsl,并解析我在下面使用的xml代码snippent

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>

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


共 (1) 个答案

  1. # 1 楼答案

    这可能取决于您实际如何获取案例中的文档xmlDoc。如果使用ajax检索文档,则返回xhttp.responseXML,而不返回xhttp.responseXML.documentElement

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

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