javascript - Jquery,在 IE 中从 div 获取 .text()

标签 javascript jquery coldfusion

我的代码适用于除 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>

我们使用以下代码加载到临时 div (divx),然后提取并重新加载到最终位置 (left2):

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

但是,当我们尝试将其分配给变量时,麻烦的人返回了一大块破坏了 javascript 的代码(我什至无法在不破坏它的情况下加载它。您可以在 this page 的源代码中查看它) ,所以我们决定使用 .text() 来提取它:

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

而不是

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

这会在除 IE 之外的所有浏览器中提取以下 js 字符串(包含换行符):

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 上其他人的建议,从字符串中提取超链接 block 是一件简单的事情。

但是,在 IE9 中,我得到 alert($('#divx').text()); 的空白结果 谁能告诉我为什么?这毁了我的一天。

您可以通过查看 this page 的源代码来查看加载到临时 div 中的代码。我想要做的就是将其作为 text() 访问,并在将其加载到最终 div 之前将其与 <a>...</a> block 隔离。

最佳答案

您处于什么浏览器/文档模式?我认为我在浏览器模式:IE9 和文档模式:IE9 标准中获得了正确的数据。将文档模式切换到 IE9 标准以外的任何模式都会返回空的 .text() 数据。

为 future 的访问者提供与此相关的附加信息:

以下是附加信息:

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

关于javascript - Jquery,在 IE 中从 div 获取 .text(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6867392/

相关文章:

javascript - 无法使用 select2 读取 jQuery 验证中未定义的 nodeName 属性

javascript - 循环遍历对象数组并更改值

javascript - 反汇编的 javascript jit 代码调用未知函数

Javascript绑定(bind)另一个函数激活/结束的事件处理程序

JavaScript 鼠标悬停按钮

java - 如何将 Open Office(32 位)与 64 位 Java 运行时环境集成?

javascript - 单击时获取动态创建元素的 top 值或 marginTop 值

javascript - 合并两个数组,存储唯一元素,并在 jQuery 中排序

php - 使用 ColdFusion 将 CSV 转换为多维数组

sql - 自夏令时开始以来,Coldfusion、SQL 和 Ingres 的数据不正确