我需要以下内容:
我收到了一份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>
提前致谢!
答案 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。