1

我正在处理的项目的设计有实时聊天插件和标题上的在线/离线图像。我正在尝试编写在代理在线时放置“在线”图像的脚本。

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

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

我想获取标签的 innerHTML 并在 if 语句的条件下使用它,如果状态为“在线”,将显示“在线”图像,否则显示离线图像。那就是我遇到问题的地方。我在选择此标签时遇到问题。当我在控制台上尝试这个时,我得到 [] 并且屏幕上没有任何变化。

$('.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">
                 ...
4

1 回答 1

3

问题是,如果iframe不先获取iframe.

这篇文章比我能更好地解释这一点。

在 JavaScript 或 jQuery 中没有实际的方法可以做到这一点,除非iframe' 的源在同一个域上(研究 'Cross-Domain and JavaScript')。但是,如果它们在同一个域中,您应该能够使用以下方法选择(和操作)元素:

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

这篇文章也展示了一些替代解决方案。

于 2013-07-02T17:00:21.737 回答