在iframe中打开的网页上调用我的jquery函数
我想点击基于我父页面中的类选择器在iframe中打开的网页上的按钮。
我试过这个 :
$.each($('.classname'), function(i, el){ setTimeout(function(){ $(el).trigger('click'); },30000 + ( i * 30000 )); });
但没有成功。 我怎样才能做到这一点?
如果iframe的src指向不同的域,由于安全原因,您将无法在javascript中访问iframe的内容。
如果iframe的源位于与父页面不同的域(甚至子域)中,则您将无法更改嵌入式iframe中的父内容。 Web浏览器默认阻止此function。
假设您在iframe中打开的页面来自您自己的域,您希望contentDocument
访问iframe中的元素。 如前所述,如果您尝试加载不在您的域上的外部页面,由于安全问题,您的浏览器将不允许这样做。
如何在Javascript中获取iframe的正文内容?
第二个答案: jQuery / JavaScript:访问iframe的内容
https://www.w3schools.com/jsref/prop_frame_contentdocument.asp
由于这个原因,同源策略不可能以你想要的方式实现。 这基本上意味着您无法编辑iframe中的数据,除非该页面具有相同的端口和域,您无法获取数据用于安全目的(浏览器不允许您这样做)…. 。
我需要更多信息来帮助您找到解决问题的不同方法…… 🙂
正如大家所建议的那样,由于安全原因,浏览器不会允许你这样做。但是有使用浏览器window
。
从您的页面:
window.postMessage({action: 'clickOnIframeButton',selector:$el},'*');
在你的iframe中:
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 )); });