在iframe中打开的网页上调用我的jquery函数

时间:2017-01-14 05:20:18

标签: jquery

我想点击基于我母网页中的类选择器在iframe中打开的网页上的按钮。

我试过了

$.each($('.classname'), function(i, el){
  setTimeout(function(){
  $(el).trigger('click');
  },30000 + ( i * 30000 ));
});

但没有成功。我怎样才能做到这一点?

5 个答案:

答案 0 :(得分:5)

如果iframe的src指向其他域,由于安全原因,您将无法在javascript中访问iframe的内容。

答案 1 :(得分:4)

如果iframe的源位于与父页面不同的域(甚至子域)中,您将无法从嵌入式iframe更改父内容。 Web浏览器默认阻止此功能。

答案 2 :(得分:1)

假设您在iframe中打开的网页来自您自己的网域,您希望contentDocument访问iframe中的元素。如上所述,如果您尝试加载不在您的域中的外部页面,由于安全问题,您的浏览器将不允许这样做。

How to get the body's content of an iframe in Javascript?

第二个答案在这里: jQuery/JavaScript: accessing contents of an iframe

https://www.w3schools.com/jsref/prop_frame_contentdocument.asp

答案 3 :(得分:1)

由于这个原因,Same-origin policy不可能以你想要的方式实现。这基本上意味着您无法编辑iframe中的数据,除非该页面具有相同的端口和域,您无法获取数据用于安全目的(浏览器不允许您这样做)....

我需要更多信息来帮助您找到解决问题的不同方法...... :)

答案 4 :(得分:0)

正如大家所建议的那样,由于安全原因,浏览器不会允许你这样做。但是有使用浏览器window的方法。

来自您的信息页:

window.postMessage({action: 'clickOnIframeButton',selector:$el},'*');  
中的

   window.addEventListener('clickOnIframeButton',
         function clickButton(e,data){
               $(data.selector).click();
           });

所以你可以做点什么,

$.each($('.classname'), function(i, el){
  setTimeout(function(){
    window.postMessage({action: 'clickOnIframeButton',selector:$el}'*');
  },30000 + ( i * 30000 ));
});