我刚刚在Delphi 10.3.3中尝试了FMX TWebBrowser。我无法在img标签中旋转照片。以下页面在谷歌浏览器中运行。但它在Delphi 10.3.3的FireMonkey TWebBrowser中不起作用。怎么了?请有人帮帮我!
<!DOCTYPE html>
<html>
<head>
<style>
img {
display: block;
width: 300px;
height: auto;
}
</style>
</head>
<body>
<button onclick="rotate();">Rotate 90 degrees</button>
<br />
<img src="20190228-1.JPG" id="theID" />
<script>
function rotate() {
var imgX=document.getElementById("theID");
imgX.style.transform = "rotate(90deg)";
imgX.style.display = "block";
}
</script>
</body>
</html>
我猜您的目标平台是Windows。TWebBrowser
将基于IE的web浏览器控件封装在Windows上,默认情况下以IE7标准模式显示页面。此模式不支持CSS转换。你有多种选择来解决这个问题。
选项1:使用不推荐使用的-ms-filter
CSS属性
-ms-filer
或filter
是用于将图形过滤器集合应用于对象的Microsoft CSS扩展。它还支持旋转:
imgX.style.filter = "progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";
选项2:通过注册表强制Egde标准模式
这也是TWebBrowser
文档鼓励您在Windows平台上执行的操作。您基本上需要手动或以编程方式将应用程序的EXE名称登记在HKEY_CURRENT_USERSOFTWAREMicrosoftInternet ExplorerMainFeatureControlFEATURE_BROWSER_EMULATION
下,作为定义应用程序兼容性模式的DWORD
值。11001
($2AF9
(用于IE11边缘模式。有关更多值,请参见浏览器仿真。此设置将影响应用程序中任何web浏览器控件中加载的所有页面。
选项3:使用x-ua-compatible
标头指定传统模式
您应该能够通过在HTML:中的<meta>
标记注入x-ua-compatible
标头来实现与选项2中相同的效果
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="x-ua-compatible" content="IE=edge">
…
有关详细信息,请参见指定旧文档模式。
以上所有内容均适用于Windows平台。从选项中选择时请记住这一点。选项1很可能在其他平台上不起作用。
当你在做的时候,还可以考虑通过利用CSS类将JavaScript与CSS分离:
<style>
img {
display: block;
width: 300px;
height: auto;
}
.rotated {
transform: rotate(90deg);
}
</style>
…
<script>
function rotate() {
var imgX = document.getElementById("theID");
imgX.classList.toggle("rotated");
}
</script>