是否可以在浏览器中加载/执行之前修改html?
要将功能添加到我无法控制的网站,我想将javascript从原始版本更改为我自己的版本。
例如:在html浏览器加载中我想改变:
<script src="/java.js" type="text/javascript"></script>
to:
<script src="http://mysite/java.js" type="text/javascript"></script>
我不能只加载我自己的页面,因为我需要登录该网站才能使用它,并且该网站使用cookie来检查我是否已登录。
我加载修改后的代码如下:
Var
aStream : TMemoryStream;
begin
if Assigned(WebBrowser1.Document) then
begin
aStream := TMemoryStream.Create;
try
aStream.LoadFromFile(Root + 'main.htm');
aStream.Seek(0, soFromBeginning);
(WebBrowser1.Document as IPersistStreamInit).Load(TStreamAdapter.Create(aStream));
finally
aStream.Free;
Timer1.Enabled := True;
end;
HTMLWindow2 := (WebBrowser1.Document as IHTMLDocument2).parentWindow;
end;
这曾经有用,但该网站添加了一个登录,现在请求javascript确实被拒绝访问。我在加载自己的代码之前尝试导航到登录和登录,但我仍然拒绝访问。
答案 0 :(得分:1)
在VCL,是的。您可以自己下载HTML并根据需要进行修改(如果HTML包含相对链接,则需要在<base href>
中插入指定原始URL的<head>
标记。然后在浏览器中导航至about:blank
,查询其Document
IPersistStreamInit
界面,并调用其load()
方法,并使用VCL&#39; s将修改后的HTML传递给它{1}}和TStringStream
类。
在FMX中,我不知道。
答案 1 :(得分:0)
以下是方法:
IInternetProtocol
)以监控HTML文档(mime类型text/html
),然后由TWebBrowser
呈现。 src="/java.js"
替换为src="http://mysite/java.js"
。这是code example.我强烈建议您先阅读这些文件。
答案 2 :(得分:0)
目前,通过在项目中添加另一个twebbrowser来解决问题。 (在新标签上)。此webbrowser处理登录并保持所需的php会话存活。 (只要窗户保持打开状态,它就会自动保持活动状态)。现在我可以加载我自己的修改代码而不会拒绝访问。
感谢您的帮助。