gpt4 book ai didi

asp.net - 无法删除TWebBrowser的边框和滚动条?

转载 作者:行者123 更新时间:2023-12-03 18:36:24 25 4
gpt4 key购买 nike

我正在尝试从TWebBrowser中删除滚动条和边框。我发现了对以下代码的大量引用,并且在www.google.com上使用时效果很好:

// Switch off scrollbars
WB.OleObject.document.body.style.overflowX := 'hidden';
WB.OleObject.document.body.style.overflowY := 'hidden';

// Switch off borders
WB.OleObject.document.body.style.borderstyle := 'none';


但是,使用ASP.NET生成的网页后,它将不再起作用。

这是ASP.NET aspx代码:

<%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Test</title>
</head>
<body bgcolor="#333333" border="0">
<form id="form1" runat="server">
<table style="width:100%;">
<tr>
<td class="style7">
<asp:Label ID="Label2" runat="server" Font-Names="Arial" Font-Size="21pt"
ForeColor="#F2F2F2" Text="Test"></asp:Label>
</td>
</tr>
</table>
</form>
</body>
</html>


...这是ASP.NET应用程序生成的HTML:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head><title>
Test
</title></head>
<body bgcolor="#333333" border="0">
<form method="post" action="Default.aspx" id="form1">
<div class="aspNetHidden">
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUJODExMDE5NzY5ZGSKCPuFcF0SPBHrn5HUkzHPVjgZoCXwtqbgbPjoAyOPAQ==" />
</div>

<table style="width:100%;">
<tr>
<td class="style7">
<span id="Label2" style="color:#F2F2F2;font-family:Arial;font-size:21pt;">Test</span>
</td>
</tr>
</table>
</form>
</body>
</html>


知道为什么滚动条/边框仍然可见吗?

最佳答案

专注于浏览器仿真

正如您之前说过的,并且已放置标签internet-explorer-11,我认为问题或多或少与页面呈现策略有关。因此解决方案可能是FEATURE_BROWSER_EMULATION。您可以确认仅MSIE11出现此问题吗?

如果是FEATURE_BROWSER_EMULATION,则应将注册表项添加为应用程序名称作为注册表项。该值应该是一个对应的仿真标志。为了更好地进行故障排除,请粘贴相关代码。

这是我经过验证的代码,可以更改您的应用程序的呈现策略。你可以试试看。

const
BROWSER_EMULATION_MSIE11_FORCED = 11001;
BROWSER_EMULATION_MSIE11 = 11000; // currently this is the best rendering engine we can have
BROWSER_EMULATION_MSIE10_FORCED = 10001;
BROWSER_EMULATION_MSIE10 = 10000;
BROWSER_EMULATION_MSIE9_FORCED = 9999;
BROWSER_EMULATION_MSIE9 = 9000;
BROWSER_EMULATION_MSIE8_FORCED = 8888;
BROWSER_EMULATION_MSIE8 = 8000;
BROWSER_EMULATION_MSIE7 = 7000;

procedure SetBrowserEmulation(Value: Integer; const ExeName: string);
begin
ChangeFeatureControlRegValue('FEATURE_BROWSER_EMULATION', ExeName, Value);
end;

procedure ChangeFeatureControlRegValue(const Feature, ExeName: string; Value: Integer);
var
Reg: TRegistry;
begin
Reg := TRegistry.Create;
try
if Reg.OpenKey('\Software\Microsoft\Internet Explorer\Main\FeatureControl\' + Feature, {CanCreate=}True) then
begin
try
Reg.WriteInteger(ExeName, Emulation);
finally
Reg.CloseKey;
end;
end;
finally
Reg.Free;
end;
end;


作为一个小促销,您可以使用我的 dutil.sys.win32.registry.Writer简化整个注册表访问的过程。

procedure ChangeFeatureControlRegValue(const Feature, ExeName: string; Value: Integer);
begin
TWriter.WriteUInt('\Software\Microsoft\Internet Explorer\Main\FeatureControl\' + Feature, ExeName, Value);
end;


另一种方法

另一种方法是覆盖浏览器行为。您是否曾经尝试实现 IDocHostUIHandleroverride IDocHostUIHandler::GetHostInfo。如果您尝试过著名的 TEmbeddedWB组件,将找到有关如何实现 IDocHostUIHandler的演示代码。关键是将 pInfo.dwFlags设置为包含标志 DOCHOSTUIFLAG_SCROLL_NO

关于asp.net - 无法删除TWebBrowser的边框和滚动条?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25551659/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com