gpt4 book ai didi

javascript - 在 Chrome 59 中运行的 JQuery 代码现在在 Chrome 60 中失效

转载 作者:行者123 更新时间:2023-11-30 15:07:05 25 4
gpt4 key购买 nike

我在 Chrome 更新之前有这个配置 (Chrome/59.0.3071.112 V8/5.9.211.38),现在我在 Chrome 更新之后有这个配置:Chorme/60.0.3112.90 V8 6.0.286.52。

以下代码在 Chrome 59 中运行良好,但现在在 Chrome 60 中出现问题。您能给我一些建议吗?看起来 find("Mensagem") 方法不再起作用了......

$(function() {
var retorno = $.parseXML('<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"><s:Body><op_st_GerarBoletoCobranca_R_H00Response xmlns="http://www.capemisa.com.br/COB/st_GerarBoletoCobranca_R_H00/2017/01"><op_st_GerarBoletoCobranca_R_H00Result i:nil="true" xmlns:i="http://www.w3.org/2001/XMLSchema-instance"/><pProcedureRaiseErrorCollection xmlns:a="http://schemas.datacontract.org/2004/07/Capemisa.WCFService.Core" xmlns:i="http://www.w3.org/2001/XMLSchema-instance"><a:ProcedureRaiseError><a:Fonte>.Net SqlClient Data Provider</a:Fonte><a:Mensagem>COB.st_GerarBoletoCobranca_R_H00: A data de vencimento informada não é válida ou não foi possível verificar.</a:Mensagem><a:Numero>50000</a:Numero><a:NumeroLinha>105</a:NumeroLinha><a:Procedure>st_MensagemErro_Negocio_R_H00</a:Procedure><a:Servidor>RJOPVSQLD01\RJODBD02</a:Servidor></a:ProcedureRaiseError></pProcedureRaiseErrorCollection></op_st_GerarBoletoCobranca_R_H00Response></s:Body></s:Envelope>');
retorno = $(retorno);
var dadosRetornoSucesso = retorno.find('op_st_GerarBoletoCobranca_R_H00Result');
var dadosRetornoErro = retorno.find('pProcedureRaiseErrorCollection');
var mensagensErro = [];

if (dadosRetornoErro.children().length > 0) {
$.each(dadosRetornoErro.children(), function(i, msg) {
console.log($(msg).find("Mensagem").text());
});
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>

最佳答案

您必须完整地选择标签:a:Mensagem 而不是 Mensagem。此外,您需要转义冒号,因此您的选择器应为 a\\:Mensagem,即:

$(msg).find('a\\:Mensagem').text()

我怀疑这可能是由于 jQuery 中选择器的错误,因为这样做有效:

msg.querySelector('Mensagem').textContent

p/s:附带说明一下,我不鼓励使用 $.each()。相反,您应该将 jQuery 集合传递给 .each():

dadosRetornoErro.children().each(function(i) {
console.log($(this).find('a\\:Mensagem').text());
});

... 或者,如果您坚持使用命名空间选择器,您将不得不使用原生 JS ;)

dadosRetornoErro.children().each(function(i) {
console.log(this.querySelector('Mensagem').textContent);
});

请参阅下面的概念验证:

$(function() {
var retorno = $.parseXML('<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"><s:Body><op_st_GerarBoletoCobranca_R_H00Response xmlns="http://www.capemisa.com.br/COB/st_GerarBoletoCobranca_R_H00/2017/01"><op_st_GerarBoletoCobranca_R_H00Result i:nil="true" xmlns:i="http://www.w3.org/2001/XMLSchema-instance"/><pProcedureRaiseErrorCollection xmlns:a="http://schemas.datacontract.org/2004/07/Capemisa.WCFService.Core" xmlns:i="http://www.w3.org/2001/XMLSchema-instance"><a:ProcedureRaiseError><a:Fonte>.Net SqlClient Data Provider</a:Fonte><a:Mensagem>COB.st_GerarBoletoCobranca_R_H00: A data de vencimento informada não é válida ou não foi possível verificar.</a:Mensagem><a:Numero>50000</a:Numero><a:NumeroLinha>105</a:NumeroLinha><a:Procedure>st_MensagemErro_Negocio_R_H00</a:Procedure><a:Servidor>RJOPVSQLD01\RJODBD02</a:Servidor></a:ProcedureRaiseError></pProcedureRaiseErrorCollection></op_st_GerarBoletoCobranca_R_H00Response></s:Body></s:Envelope>');
retorno = $(retorno);
var dadosRetornoSucesso = retorno.find('op_st_GerarBoletoCobranca_R_H00Result');
var dadosRetornoErro = retorno.find('pProcedureRaiseErrorCollection');
var mensagensErro = [];

if (dadosRetornoErro.children().length > 0) {
dadosRetornoErro.children().each(function(i) {
console.log($(this).find('a\\:Mensagem').text());
});
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>

关于javascript - 在 Chrome 59 中运行的 JQuery 代码现在在 Chrome 60 中失效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45589791/

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