gpt4 book ai didi

javascript - jQuery 选择器转义冒号 ":"在 IE 中有效,但在其他地方不起作用

转载 作者:行者123 更新时间:2023-12-02 17:53:24 25 4
gpt4 key购买 nike

我有一个 XSL 对象。我想提取一组选定的节点。另一个人或团队编写了 XSL 文档和选择这些节点的代码行,但它仅适用于 IE,我正在尝试使其跨浏览器兼容。

XSL 文件

<!-- snippet of XSL file -->
<xsl:variable name="title">aaa</xsl:variable>

<xsl:variable name="col1">CSV00001</xsl:variable>
<xsl:variable name="col2">CSV00002</xsl:variable>
<xsl:variable name="col3">CSV00003</xsl:variable>
<xsl:variable name="col4">CSV00004</xsl:variable>
<xsl:variable name="col5">CSV00005</xsl:variable>
<xsl:variable name="col6">CSV00006</xsl:variable>
<xsl:variable name="col7">CSV00007</xsl:variable>
<xsl:variable name="col8">CSV00008</xsl:variable>
<xsl:variable name="col9">CSV00009</xsl:variable>

JS文件

// Extract title and column nodes
var varNodes = $(csvXsl).find("xsl\\:variable");

我尝试引用这篇文章来获取想法,Handling a colon in an element ID in a CSS selector ,但那是针对 CSS 的。但我确实尝试将 \: 替换为 \\3A\\3a3a3A 但这些都不起作用。

有什么建议吗?

根据要求,这里提供了有关如何创建 XSL 对象的更多信息。

function loadXml(xmlFilePath) {
var retObj = null ;
var timeUniq = (new Date()).getTime();

// check protocol
var protocol = document.location.protocol;
if(protocol.toLowerCase().indexOf("http")>=0){
$.ajax({
url: xmlFilePath + "?t=" + timeUniq,
type: 'get',
dataType: 'xml',
async: false,
timeout: 1000
})
.done(
function(xml, status){
if( status != 'success' ){
return;
}
retObj = xml;
})
.fail(
function(xhr, textStatus){
return;
});
}

return retObj;
}

csvXsl = loadXml("./xsl/OrderListCSV.xsl");

谢谢。

更新

根据要求,我添加了一个 fiddle 。

http://jsfiddle.net/Q3jNN/

更新2

工作 JSFiddle 例程,所有功劳都归功于评论员 Niet。

http://jsfiddle.net/dNDN6/2/

如果链接损坏,以下是相关部分:

// Workaround for JQuery bug, primarily using Vanilla JS.

function serializeXmlNode(xmlNode) {
if (typeof window.XMLSerializer != "undefined") {
return (new window.XMLSerializer()).serializeToString(xmlNode);
} else if (typeof xmlNode.xml != "undefined") {
return xmlNode.xml;
}
return "";
}

var tmpStr = serializeXmlNode(csvXsl); // Converts XML/XSL object to String
var tmp = document.createElement('div');

tmp.innerHTML = csvXsl; // Does not work
tmp.innerHTML = tmpStr; // This one works, had to serialize object first

var varNodes = tmp.getElementsByTagName('xsl\:variable'); // Works
var varNodes2 = tmp.getElementsByTagName('xsl:variable'); // Also works

最佳答案

我会执行一些步骤来调试此问题:

  1. 检查 csvXls 变量的内容,您可以尝试例如查找: console.log(csvXsl)然后 $(csvXsl).find("xsl\\:variable");$("xsl\\:variable",csvXsl);

  2. 如果该变量包含正确的节点,例如 <xsl:variable name="col9">CSV00009</xsl:variable>那么它可能是 jQuery 中的一个错误,我觉得在这样一个基本的选择器中应该排除它。

  3. 发布如何获取csvXsl提供更多背景信息,以便我们更好地帮助您。

关于javascript - jQuery 选择器转义冒号 ":"在 IE 中有效,但在其他地方不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21174687/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com