从iframe内容到对象内容的jquery选择器

时间:2014-03-12 08:16:01

标签: javascript jquery html object iframe

我需要以下内容:

我收到了一份html文件,其中有一个iframe和一个对象。 iframe和对象都包含separat html文件。

现在我想点击iframe中的链接,这会影响要隐藏的对象内的链接。

如何使用jQuery选择器选择对象html文件中的链接?

结构:

<html file parent>
    <iframe> html site 1 with link to click</iframe>
    <object> html site 2 with links to affect </object>
<html file parent>

提前致谢!

3 个答案:

答案 0 :(得分:1)

如果iframe的域名与您的域名不同,则无法执行此操作。
这是一个javascript限制。

答案 1 :(得分:0)

为此,您需要控制iframe中加载的网址。

如果属于同一个域,那么你可以这样做。

答案 2 :(得分:0)

如果您可以控制iframe的网址,请尝试此操作。

首先,看看window.postMessage。使用此功能,您可以将iframe中的事件发送到窗口父目标。在父窗口中侦听该事件(当iframe中的内容发生更改时),您将能够使用如下语法访问object标记内的任何元素:

$('object').contents().find('linkSelector')

给你的iframe一个id,让我们说myIframe

<iframe id="myIframe"> html site 1 with link to click</iframe>

获取对iframe的引用:

var myIframe = document.getElementById('myIframe');

从iframe发布消息:

myIframe.contentWindow.postMessage('iframe.clicked', 'http://your-domain.here.com');

iframe更改处理程序:

var handleIframeChange = function(e) {
    //
    if(e.origin == 'http://your-domain.here.com') {
        // Get reference to your `object` tag
        var objContent = $('object').contents();

        // For instance, let's hide an element with a class of `link-class-here`
        objContent.find('.link-class-here').hide();
    }
}

在父窗口上收听iframe发送的事件:

window.addEventListener('iframe.clicked', handleIframeChange, false);

Haven目前正在对它进行测试(过去曾经这样做过,当我控制了iframe时)但它应该有效,但正如我所说,只有你可以控制iframe。