2013-07-02 247 views
0

我正在开发的项目的设计有实时聊天插件和标题上的图像,在线/离线说。我正在尝试处理代理在线时将放置“在线”图像的脚本。选择内部框架内的内容

插件的标题显示状态,像这样

<span __jx__id="___1_livehelpbutton__agentstatus" class="agentStatus" style>Offline</span> 

我想获得的innerHTML的标签,如果语句中使用它在有条件的,如果状态是“当中,在线“将显示”在线“图像,否则显示离线图像。那是我遇到问题的地方。我无法选择这个标签。当我在控制台上试用时,我得到[],屏幕上没有改变。

$('.agentStatus').css('background','red'); 

当,作为一个CSS页面上的测试,我尝试.agentStatus {background:red; },背景变成红色。

的IFRAME它是就是没有一个不同的URL:

<iframe __jx__id="___$13__iframe src="javascript:void(document.write('<!DOCTYPE HTML PUBLIC -//W3C//DTD HTM…order-box}</style></head><body></body></html>'), document.close())" frameborder="0" style=" background-color: transparent; vertical-align: text-bottom; overflow: hidden; position: relative; width: 100%; height: 100%; margin: 0px; z-index: 999999;"> 
    #document 
     <!DOCTYPE html PUBLIC"-W3C//DTD HTML 4.0 Transitional/EN" "http:www.w3.org/TR/html4/loose.dtd" 
      <html style="overflow-y: hidden"> 
       ... 
+0

不应该像'$(“#status”)那样简单。removeClass(“offline”)。addClass(“online”);'? – Halcyon

+0

是的,if语句中的代码将非常简单。我遇到的问题是if语句的条件部分的选择器。 –

回答

3

的问题是,你根本无法访问内容在iframe不首先抓住的是正在被iframe显示的文档。

post解释这比我更好。

除非iframe的源代码位于同一个域中(研究“跨域和JavaScript”),否则在JavaScript或jQuery中没有实际的方法。如果他们是在同一个域,但是,你应该能够选择(和操作)使用以下元素:

$("#iframeID").contents().find(".agentStatus").css("background", "red"); 

post显示了这几个替代解决方案,以及。

+0

它工作$(“#iframeID”)。contents()。find(“。agentStatus”)。css(“background”,“red”); –

+0

很高兴帮助:)祝你好运! –