Различие в jQuery с пространством имен XML и xhr.responseXML между Opera и Firefox

Взгляните на API, доступные в пакет java.lang.management . Например:

  • OperatingSystemMXBean.getSystemLoadAverage()
  • ThreadMXBean.getCurrentThreadCpuTime()
  • ThreadMXBean.getCurrentThreadUserTime()

существуют загрузки других полезных вещей там также.

5
задан Jason Berkan 5 November 2009 в 15:33
поделиться

4 ответа

Я уже испытал такое поведение в разных версиях одного и того же браузера, и насколько я помните, в то время я тестировал проблемную страницу с помощью FF и IE, поэтому я бы сказал, что это не ошибка, специфичная для Opera.

Я бы посоветовал всякий раз, когда вы используете jQuery для синтаксического анализа тегов XML с префиксами пространства имен, вы запрашиваете селектор как с префиксом, так и без него. То есть вместо использования

var x_txt = xml.find('atom\\:x').text();

try

var x_txt = xml.find('atom\\:x, x').text();

я думаю, что это приемлемый обходной путь для большинства ситуаций, и он гарантирует, что ваши результаты верны, несмотря на неправильное поведение ...

2
ответ дан 14 December 2019 в 13:40
поделиться

Я думаю, вы должны сказать "atom: x" (без обратной косой черты) и обязательно иметь xmlns: atom = "http://www.w3.org/2005/Atom "объявление либо в теге html в главном файле HTML, либо каким-либо другим способом, известным для javascript.

1
ответ дан 14 December 2019 в 13:40
поделиться

It is hard to say if this is a bug in opera or if this is a bug in jQuery that is Opera specific. From the sounds of it, Opera is not properly adding the namespace to the xhr document dom and this is why jQuery cannot query atom:x and also explains why, when you create your own jquery node, you do not get the same results.

First thing I would do is to try and see if atom is a defined namspace in the xhr dom. It should return your atom ns as defined, If not, this is probably an opera bug. I'm not sure the best way to test this, but perhaps: xhr.getElementByTagNameNS( "x" "http://www.w3.org/2005/Atom" ); will work.

Failing that, Opera claims to support XML namespaces fully however so, I would open a bug request with jQuery and see where that get's you.

In other points, as I eluded to in my comment, I do not think that querying atom:x by x is a good idea at all. You may as well not use namespaces since it defeats the purpose.

0
ответ дан 14 December 2019 в 13:40
поделиться

Это не ошибка Opera. Это правильное поведение :

В клиенте, поддерживающем пространство имен, часть имени в селекторах типа элемента (часть после разделителя пространства имен, если он присутствует) будет соответствовать только локальной части полное имя элемента.

В вашем случае локальное имя x , а atom: x даже не является допустимым локальным именем в XML .

Более того, селектор типа с префиксом пространства имен в CSS имеет другой синтаксис, который вообще не использует двоеточие:

@namespace atom url(http://www.w3.org/2005/Atom);
atom|x { color: blue }

Ваш синтаксис, похоже, основан на причуде, введенной синтаксическими анализаторами HTML у пользователя, не знающего пространства имен -агенты.

HTML-парсер "съедает" двоеточие как часть имени тега, и вы получаете элемент atom: x в пространстве имен по умолчанию, который соответствует селектору atom \: x ,

3
ответ дан 14 December 2019 в 13:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: