在Chrome的网页检查器中,如果右键单击DOM元素,则会出现“复制为HTML”选项,该选项通常会为您提供该元素及其所有子元素的HTML字符串。但是,它似乎并未包含IFrame标记的内容,尽管它们作为子节点出现在检查器中。
问题不是由跨域限制引起的:即使从复制的HTML中排除同域IFrame也是如此。
有没有办法解决这个问题,只是复制并粘贴每个嵌套IFrame的HTML根目录并在文本编辑器中手动将它们拼接在一起?我为一个网站工作,其第三方广告脚本经常会生成嵌套IFrame的大型蔓延树,我需要一种方法让同事能够复制并粘贴该结构,这样我就可以调试广告问题而无需亲身坐下在他们的办公桌前。
答案 0 :(得分:2)
我相信谷歌浏览器已在其浏览器内部对其行为进行了硬编码,但我没有时间查找代码部分。
这是一个解决方法,它将使用谷歌浏览器从网页上的所有iframe中获取html。
DisplayIframeContent.js
将产生这样的错误。 不安全的JavaScript尝试使用URL ...访问框架
示例:
cd LOCATION \ OF \ GOOGLE \ CHROME
chrome.exe --disable-web-security
Google Chrome加载后,您会看到黄色警告,
您使用的是不受支持的命令行标志: - disable-web-security。稳定性和安全性将受到影响。
DisplayIframeContent.js
。DisplayIframeContent.js
// @author Larry Battle <bateru.com/news> 12.13.2012
// requires jQuery 1.8.3+
clear();
if( !$("iframe").length ){
console.log("No iframes were found");
}else{
$("iframe").each(function (i) {
console.log( "### iframe[%s].src = (%s)", i, $(this).attr("src") );
console.log( $(this).contents().find("html").html() )
});
}
"done";
示例网址:http://jsfiddle.net/28yrA/ 输出:
### iframe[0].src = (javascript:false)
...HTML...
### iframe[1].src = (javascript:false)
...HTML...
### iframe[2].src = (javascript:false)
...HTML...
### iframe[3].src = (http://fiddle.jshell.net/28yrA/show/)
...HTML...
"done"
答案 1 :(得分:1)
我终于通过DW-dev的Chrome扩展程序 Save Page WE 找到了解决方案。
https://chrome.google.com/webstore/detail/save-page-we/dhhpefjklgkmgeafimnjhojgjamoafof
它也可用于Firefox。 https://addons.mozilla.org/en-US/firefox/addon/save-page-we/
答案 2 :(得分:0)
另一个答案可能有效,但我不喜欢只是复制一些HTML来禁用安全性。
这是恕我直言的另一种方式简化。
首先检查元素并复制iframe
元素,现在将其粘贴到您想要添加的位置。
结果应为空iframe
标记及其所有属性:
<iframe src="src"></iframe>
现在在iframe
内部手动输入#document
和DOCTYPE
,所以你现在有类似的东西:
<iframe>
#document
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
</iframe>
将iframe中文档的父节点复制为html,它将复制所有子节点,就像复制普通的html页面一样。
只需在doctype下粘贴,即可拥有整个iframe
。结果应该看起来像这样
<iframe>
#document
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<!-- All the child nodes -->
</html>
</iframe>