我的代码适用于除 IE 之外的所有浏览器(惊喜,惊喜)。
不过,这是一件棘手的事情。我们有一个 Coldfusion 自定义标签,它可以在文档正文中生成广告代码。但是,出于页面加载速度的原因,我们决定在文档准备好后尝试使用 jQuery 加载从自定义标记返回的代码。
我们几乎尝试了所有可能的方法,但每种方法都有各自的麻烦。最后决定最初在页面底部的隐藏 div 中调用自定义标记,然后使用 jQuery 获取我们需要的代码的特定部分,并将其加载到页面上方的最终放置位置。
我们总共有五个广告。其中之一返回 IE 无法使用的代码。其余的都工作正常。
四个 OK 广告从自定义标记返回一个超链接字符串(例如如下所示),该字符串易于使用并适用于所有浏览器:
<a href="http://bs.serving-sys.com/BurstingPipe/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>
我们使用以下代码加载到临时 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/