我正在尝试学习jQuery并尝试构建Chrome扩展程序。黑客攻击我最终试图解析一个加载javascript和Ajax查询以生成HTML的网页,我如何以编程方式获取最终计算的HTML被浏览器而不是源HTML解析?
我的问题受到另一个问题的启发: how to get fully computed HTML (instead of source HTML)?
不同之处在于我真的想了解这是否可行以及如何以编程方式进行,最好是使用JavaScript。
我已经尝试过使用:
$(document).ajaxComplete()
但没有积极的结果。
根据评论更新:
我无法访问代码,我只能向网站发送获取请求。然后该网站将返回页面源代码,该页面源代码本身包含ajax或javascript。我希望渲染Ajax和JavaScript,以便我可以解析它出来的任何内容。
答案 0 :(得分:0)
要在脚本执行后获取文档的标记,您必须将此标记附加到iframe或类似内容中。
然后,您将能够通过yourFrame.contentDocument.documentElement
*。
最简单的方法是让你的AJAX调用直接返回一个Blob,这是我在下面的代码块中假设的,但你也可以通过文本响应创建它,甚至设置iframe' s src到'data:text/html,' + encodeURIComponent(textResponse)
。
var iframe = document.createElement('iframe');
// since we need to append the iframe for it to load, lets hide it
iframe.width = iframe.height = 0;
iframe.setAttribute('style', 'position:absolute; opacity:0;')
$('body').append(iframe); // this is a jQuery question...
iframe.src = URL.createObjectURL(AJAXresponseAsBlob);
// here we will trigger the catching at page load
iframe.onload = function() {
var outer = iframe.contentDocument.documentElement.outerHTML;
iframe.parentNode.removeChild(iframe); // we don't need it anymore
doSomethingWith(outer);
}
Live Example(因为堆叠片段是沙盒...)
* IIRC,关于如何访问iframe内容存在一些实施问题,但我会让你搜索它,这在过去已经被多次回答了。