Xsl transformToDocument不能在chrome浏览器中工作,但可以在firefox中工作
Xsl transformToDocument is not working in chrome browser but working in firefox
我通过调用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 > 0 && pwd.length > 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 && 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.responseXML
, DOES NOT返回xhttp.responseXML.documentElement
。
两者都可以使用XMLSerializer转换为文档的有意义的表示形式,但只有第一个语句是XSL转换的可行参数。
如果使用后者,则XSLTransformation的返回值(使用toDocument或toFragment函数)在我的情况下为空(使用Chrome)
相关文章:
- window.open在内联脚本中返回null并失败,但可以在控制台中工作
- 这个脚本在firefox中工作,但可以'我不能用IE 7、8、9
- 通过DOM工作将PHP变量传递给JavaScript,但可以't将相同的变量从JS传递回PHP
- javascript代码不能在本地正确执行,但可以在JS Fiddle中工作
- Ajax POST失败,但可以在控制台中工作
- HTML音频不能在macbook和ios上工作,但可以在imac上工作——奇怪
- JQuery克隆不能在chrome上工作,但可以在firefox中工作
- var声明语法很奇怪,但可以正常工作
- Ui-router不能从nodejs文件夹中工作,但可以在plunker上工作
- 我的代码不能在Meteor中正常工作,但可以在JS小提琴上工作
- jasmine.clock().tick()不能与$timeout和debounce一起工作,但可以与setTimeou
- 视频不能在safari(来自Windows)中工作,但可以在Mozilla和chrome中工作
- 为什么单行异或交换不能在Javascript中工作,但可以在c++中工作
- jQuery不能在IE11中工作,但可以在Chrome中工作
- javascript onclick不能在chrome和IE8中工作,但可以在firefox 7.0.1中工作
- JS正则表达式代码不能在firefox上工作,但可以在chrome和IE上工作
- 代码来改变BG图像不工作,但可以改变BG的颜色
- 导航栏菜单不能在Microsoft Internet浏览器中工作,但可以在Firefox, Chrome和;歌剧
- 现场Javascript不能在Electron中工作,但可以在其他任何地方工作
- Xsl transformToDocument不能在chrome浏览器中工作,但可以在firefox中工作