Jquery, получение .text () из div в IE - PullRequest
1 голос
/ 29 июля 2011

У меня есть код, который работает для всех браузеров, кроме IE (удивление, удивление).

Хотя это сложная штука.У нас был специальный тег Coldfusion, который генерирует рекламный код в теле документа.Но по соображениям скорости загрузки страницы мы решили попытаться загрузить код, возвращенный из пользовательского тега, с помощью jQuery после того, как документ был готов.

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

У нас всего пять объявлений.Один из них возвращает код, с которым IE не может работать.Остальные все работают нормально.

Четыре объявления OK возвращают строку гиперссылки из пользовательского тега (например, следующим образом), с которой легко работать и которая работает во всех браузерах:

<a href="http://bs.serving-sys.com/BurstingPipe/adServer.bs?cn=brd&amp;FlightID=2997227&amp;Page=&amp;PluID=0&amp;Pos=9088" 
   target="_blank">
    <img src="http://bs.serving-sys.com/BurstingPipe/adServer.bs?cn=bsr&amp;FlightID=2997227&amp;Page=&amp;PluID=0&amp;Pos=9088" 
         border="0" 
         width="300" 
         height="250">
</a>

Мы используем следующий код для загрузки в temp div (divx), а затем извлекаем и перезагружаем в конечную позицию (left2):

$('#divx').html("").load('/remoteAd.cfm?type=left2&referrer=/index.cfm', 
    function(g){
        var xx = $('#divx').html());
        $('#left2').html(xx);
});

ОДНАКО хлопотный код возвращает огромный блок кода, который нарушает работу JavaScript, когдамы попытались присвоить его переменной (я даже не могу загрузить его здесь без прерывания. Вы можете просмотреть его в исходном коде этой страницы ), поэтому мы решили извлечь его, используя .text ():

var xx = $('#divx').text();

вместо

var xx = $('#divx').html();

Извлекает следующую строку js STRING (с разрывом строки) во ВСЕХ БРАУЗЕРАХ, КРОМЕ IE:

ajaxinclude("/remoteAd.cfm?type=right1&referrer=/index.cfm");

function ebStdBanner1_DoFSCommand(command,args){
   try{
        command = command.replace(/FSCommand:/ig,"");
        if((command.toLowerCase() == "ebinteraction") ||   
           (command.toLowerCase()=="ebclickthrough")) 
            gEbStdBanners[1].handleInteraction(args);
        else if(command.toLowerCase()=="ebversiontrackingimpression")
            gEbStdBanners[1].ebversiontrackingimpression(args);
   } catch(e) {}
} 
function ebIsFlashExtInterfaceExist(){
    return true;
}

<a href="http://bs.sys.com/adServer.bs?cn=brd&FlightID=2997227&Page=&PluID=0&Pos=9088" 
   target="_blank">
    <img src="http://bs.serving-sys.com/BurstingPipe/adServer.bs?cn=bsr&FlightID=2997227&Page=&PluID=0&Pos=9088" 
         border=0 
         width=300 
         height=250>
</a>

Этопростой способ извлечь блок гиперссылки из строки, благодаря предложениям от других по stackoverflow.

ОДНАКО, в IE9 я получаю пустой результат для alert($('#divx').text()); Может кто-нибудь сказать мне, ПОЧЕМУ ?.Это разрушает мой день.

Вы можете просмотреть код, который загружается в временный блок, просмотрев исходный код этой страницы .Все, что я хочу сделать, это получить доступ к нему как к тексту () и изолировать блок <a>...</a> от него перед загрузкой в ​​свой последний div.

Ответы [ 2 ]

0 голосов
/ 01 августа 2011

В каком режиме браузера / документа вы находитесь?Я думаю, что я получаю правильные данные в режиме браузера: IE9 и режиме документа: стандарты IE9.Переключение режима документа на что-либо кроме стандартов IE9 возвращает пустые данные .text ().

Включая дополнительную информацию об этом для будущих посетителей:

Вот дополнительная информация:

http://blogs.msdn.com/b/ie/archive/2010/10/19/testing-sites-with-browser-mode-vs-doc-mode.aspx

и перевести IE9 в стандартный режим: http://msdn.microsoft.com/en-us/library/cc288325(VS.85).aspx

0 голосов
/ 29 июля 2011

Сложно сказать, но если я угадаю: у вас есть дубликаты ID на вашей странице.

IE не может обработать дубликаты идентификаторов [#divx] и не сможет [не стандартно иметь дубликаты], другим браузерам удастся сделать это правильно ... попробуйте переключить все #divx в класс [.divx]. и попробуйте $('.divx').text()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...