Я получаю HTML-код в виде ответа ajax, и мне нужно получить только содержимое тела. Поэтому я сделал это регулярное выражение:
/(<body>|<\/body>)/ig
хорошо работает во всех браузерах, но по какой-то причине IE дает мне другой массив, когда я использую split:
data.split(/(<body>|<\/body>)/ig)
Во всех обычных браузерах содержимое тела split (/ (< body> | <\ / body>) / ig) [2]
, но в то есть его в split (/ ( | <\ / body>) / ig) [1]
. (проверено в IE7 и 8)
Почему это? И как я могу изменить его, чтобы получить один и тот же массив во всех браузерах?
edit просто для пояснения. У меня есть решение, упомянутое tobyodavies. Я хочу понять, почему он ведет себя по-другому.
это HTML из ответа: (строка в данных)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "">http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de" dir="ltr">
<head>
blablabla...
</head>
<body>
<div class="iframe">
<div id="block-menu-menu-primary-links-user" class="block-menu">
<h3>Primary Links - User</h3> <div class="content"><ul class="menu"><li class="leaf first"><a target="content" href="#someurl" title="">Login</a></li>
<li class="leaf last"><a target="content" href="#someurl" title="">Register</a></li>
</ul></div>
</div>
</div>
</body>
</html>
PS: я знаю, что синтаксический анализ HTML с регулярным выражением - это плохо, но это не мой код, я просто нужно это исправить.