我需要使用服务器端应用程序获取已完成渲染并完成运行脚本的页面的当前样式(可能是内联)的HTML(仅提供URL)(没有额外信息,如cookie,没有POST,没有阻碍形式)等).
临时运行的浏览器的桥接/代理或使用浏览器库的独立实用程序是一种可接受的解决方案(但是,所选的浏览器或浏览器库必须在所有主要平台上都可用,并且必须能够在没有OS GUI的情况下运行出席或安装).
一个可选的要求是之后删除所有脚本(已经有了独立的解决方案,在这里添加它,因为可能给定的答案将能够在渲染时删除脚本或类似的东西).
如何在当前样式(可能是内联的)和当前图像(使用数据URI)的单个.html文件中获取HTML + CSS中的快照?
如果可以使用纯PHP来完成它将是一个加号(虽然我怀疑它,我没有发现任何有趣的东西).
编辑:我知道如何加载HTTP资源并获取URL的HTML,这不是我正在寻找的;)
编辑2 示例输入HTML:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
<link rel="stylesheet" type="text/css" href="/css/example.css">
<script type="text/javascript" src="/javascript/example.js"></script>
<script type="text/javascript">
window.addEventListener("load",
function(event){
document.title="New title";
document.getElementById("pic_0").style.border="0px";
}
);
</script>
<style type="text/css">
p{
color: blue;
}
</style>
</head>
<body>
<p>Hello world!</p>
<p>
<img
alt=""
style="border: 1px"
id="pic_0"
src="http://linuxgazette.net/144/misc/john/helloworld.png"
>
</p>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
示例输出:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>New title</title>
<meta http-equiv="Content-Type" …Run Code Online (Sandbox Code Playgroud) Chrome是大三人组(IE,Firefox,Chrome)中最后一个不赞成在"主线程"上运行同步XMLHttpRequest调用的人(就像Firefox所说的那样).某些浏览器还完全删除了.widthCredentials在主线程上设置同步请求选项的功能.
经过远距离搜索后,我找不到足够的信息来精确识别哪些代码将在主线程上运行,哪些代码不会.
很明显,通过脚本标记(内联或使用src)包含的javascript位于主线程上.并且在异步XHR的回调内运行的同步XHR将不会在主线程上运行.
但其他场景呢?鼠标事件,触摸事件,各种文档事件?没有尝试一切怎么说?避免让一切都异步并回调地狱会很好.
请尝试彻底的答案.
编辑: W3C规范警告:当JavaScript全局环境是文档环境时,开发人员不得为async参数传递false,因为它会对最终用户的体验产生不利影响.强烈建议用户代理在开发人员工具中警告这种用法,并尝试在其发生时抛出"InvalidAccessError"异常,以便最终可以从平台中删除该功能.
编辑2: 澄清:
在某些情况下,调用代码必须等待所有竞争同步异步调用完成(使用一些计数器或状态跟踪变量来进行每次调用),或者使用回调链接它们.每种情况都很糟糕.例如,我有一个JSONRPC客户端需要通过查询反射API来动态创建可调用函数.
让所有实现代码(UI或NOT)在另一个库的回调中运行是有利的,特别是如果它必须在多个页面上完成,并且库必须表现为一个简单的定义(隐藏那是在定义时运行代码).这只是复杂性的一个例子,我不是要求它的解决方案,而是对浏览器如何决定哪个是主线程的一般清晰解释.
我有一个非常复杂的HTML/CSS布局,我想在我的服务器上转换为PDF.我已经尝试过DOMPDF,遗憾的是它没有使用正确的布局转换HTML.我已经考虑过HTMLDOC,但我听说它在很大程度上忽略了CSS,所以我认为布局也会与该工具分开.
我的问题是 - 是否有其他工具(如wkhtmltopdf ie)的在线演示,我可以用它来验证我的HTML是如何转换的?在我的余生中一个接一个地安装和测试之前?
不幸的是,我无法更改HTML布局以适应这些工具.或者更好地说 - 我可以,如果他们中的任何一个接近可接受的结果......
我正在寻找一种方法来操纵PHP运行的Web服务器,使用API.
例如,我希望能够动态添加mod重写规则或阻止某些路径的IP地址,所有这些都不会触及.htaccess文件.
请问像这样的PHP存在吗?
使用PHP PDO MySQL,异常模式.
是否存在[MySQL]死锁的PDOException代码?
如果不是,还有其他选择吗?
我正在寻找一种方法来检测Allow override虚拟主机设置是否导致 .htaccess 文件被忽略。
现在,我正在测试可以在 .htaccess 中设置的一些 PHP 设置的值,但是这种检测还不够好(因为这些值也可能在 php.ini 中进行了更改)。
最终目标是防止应用程序在忽略 .htaccess 文件的情况下运行,原因如下:
是否有安全可靠的方法来检测 .htaccess 文件是否有效?