我想点击基于我母网页中的类选择器在iframe中打开的网页上的按钮。
我试过了:
$.each($('.classname'), function(i, el){
setTimeout(function(){
$(el).trigger('click');
},30000 + ( i * 30000 ));
});
但没有成功。我怎样才能做到这一点?
答案 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 ));
});