我希望从包含iframe的网站获取内容,并且我在这里使用basysmith的回答(https://stackoverflow.com/a/3127056/8177490)来获取内容,以便我可以从我的域中提供iframe。
我想只显示某个div,让我们把它称为" table-wrap"从页面中隐藏iframe中的其他所有内容。
我已经尝试了几乎关于这个主题的每一个答案,但似乎没有任何效果。 当我使用这个
时var iframeDoc = document.getElementById('iframeid').contentWindow;
jQuery(iframeDoc).find('body > not:#table-wrap').hide();
jQuery(iframeDoc).find('#table-wrap').appendTo('body');
在控制台中。
我仍然收到错误,虽然它是通过我的域名脚本提供的:
VM4380:66 Uncaught DOMException: Failed to read the 'contentDocument' property from 'HTMLIFrameElement': Blocked a frame with origin "https://mydomain.de" from accessing a cross-origin frame.
at HTMLIFrameElement.contentDocumentDesc.get [as contentDocument] (<anonymous>:66:14)
at contents (https://mydomain.de/wp-includes/js/jquery/jquery.js?ver=1.12.4:2:26888)
at Function.map (https://mydomain.de/wp-includes/js/jquery/jquery.js?ver=1.12.4:2:3613)
at a.fn.init.n.fn.(anonymous function) [as contents] (https://mydomain.de/wp-includes/js/jquery/jquery.js?ver=1.12.4:2:27001)
at <anonymous>:1:18
我也尝试过使用iframe.onload和
的不同方法jQuery("#iframeID").ready(function () {
jQuery('#iframeid > :not(#table-wrap)').hide();
jQuery('#table-wrap').appendTo('body');
});
但似乎没有任何效果。
有没有人知道如何才能让它发挥作用? 我会很感激。
答案 0 :(得分:0)
从(https://mydomain.de)拉jQuery的位置是否与外部页面和内部iFrame页面相同?
由于实际访问iFrame内容的任务属于您的示例中的jQuery,因此您需要验证所有域(包括jQuery脚本本身)是否匹配以避免跨域错误。
取决于你想要做什么,window.postMessage可能是一个更好的解决方案,因为它绕过了很多域和安全问题(假设你拥有外页和内页),甚至只是一个直接的ajax请求在页面和服务器之间(因此完全避免了iFrame)。