我在MySQL数据库中有几个网页,我想在我的Delphi(7)表单上显示为“幻灯片”。
我正在尝试使用EmbeddedWebBrowser,并使用iframe
标签动态生成我的HTML文件 - 目前显示的网页超过1个。
问题是,当我将这个html文件加载到EmbeddedWB时,高度只有150px左右,但在IE中,FF,chrome看起来还不错。
我的Delphi代码:
embeddedwb1.LoadFromFile('mypage.html');
有什么建议吗?
PS:我的收藏中的网页不是来自同一个网域。
如何重现: 将Embeddedwebbrowser组件放置到form,set
RegisterAsBrowser
参数
True
,对于“静音”模式,我将此事件添加到EmbeddedWebBrowser:
procedure TForm1.EmbeddedWB1ScriptError(Sender: TObject; ErrorLine, ErrorCharacter, ErrorCode, ErrorMessage, ErrorUrl: String; var ContinueScript, Showdialog: Boolean);
begin
continuescript:=true;
showdialog:=false;
end;
然后我生成了一个简单的...循环html代码如上所示..如果mypage网站中有“子”iframe,它没有正确显示子iframe高度(来自另一个域).. 如果这个ads.html文件(由这个简单的delphi应用程序生成)在正常的IE(11)中打开,它正确显示子iframe ...我试图改变embeddedwebbrowser参数(有很多),但没有成功。抱歉这个“完整的工作示例” - 我需要学习如何写出更好的质量,但1)我的英语不好2)我是新来的,必须学到很多:)但这个问题几乎是关键,我必须解决它直到星期三 我在form1上放了一个按钮,表格如下:
embeddedwb1.LoadFromFile( '的mypage.html');
'mypage.html'的例子:
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="X-UA-Compatible" content="IE=11"></head>
<body>
<iframe style="position:absolute;width:100%;height:100%" src="http://www.expresspaid.net/?x=ptcview&view=bHNETmxjTXd1ck4wQWxYWmx6YWRkS0xSWGVZSklWSlJ3aWVOdzVkOXNhND0,">
</iframe>
</body>
</html>
一周后我就搞固了这个问题! :)
解决方案是:
当我从Delphi生成.html文件时(将整个代码动态写入文本文件,然后在EmbeddedWB中打开)
我写了这样的iframe标签:
htmlpage:=htmlpage+`'<iframe width="100%" height="800" src="'+mypagestring+'"></iframe>'+#13+#10;
但它并不好......
我的新工作html标签:
htmlpage:=htmlpage+'<iframe sandbox="allow-same-origin allow-scripts allow-popups allow-forms" width="100%" height="800" src="+mypagestring+"></iframe>'+#13+#10;
如您所见,在父iframe中使用sandbox
帮助我显示完整的子iframe,而不仅仅是其中的一部分:)