Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/152.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在将Adsense代码插入嵌入式浏览器后,如何使其运行? 我需要使用任何语言中的DOM API(Delphi,C++,C语言)将谷歌广告添加到页面中。我可以使用DOM将Adsense代码添加到网页中,但是如何触发它运行呢_C#_C++_Delphi_Dom - Fatal编程技术网

C# 在将Adsense代码插入嵌入式浏览器后,如何使其运行? 我需要使用任何语言中的DOM API(Delphi,C++,C语言)将谷歌广告添加到页面中。我可以使用DOM将Adsense代码添加到网页中,但是如何触发它运行呢

C# 在将Adsense代码插入嵌入式浏览器后,如何使其运行? 我需要使用任何语言中的DOM API(Delphi,C++,C语言)将谷歌广告添加到页面中。我可以使用DOM将Adsense代码添加到网页中,但是如何触发它运行呢,c#,c++,delphi,dom,C#,C++,Delphi,Dom,广告代码通常在文档.load事件中运行。如何将我的功能附加到该事件?(我也可以使用文档下载事件,但此事件与DOM不兼容。) 在运行Adsense Javascript代码之前,我需要将我的函数附加到文档。加载,并且我需要使用DOM功能解析HTML代码。听起来更像是一个Javascript问题 如果您使用以下框架,所有这些都会变得容易得多:它将允许您从javascript代码轻松访问DOM 例如,请参阅官方教程,以轻松操作页面的DOM 以下是本页的摘录: 我们从一个空的html页面开始: <

广告代码通常在
文档.load
事件中运行。如何将我的功能附加到该事件?(我也可以使用文档下载事件,但此事件与DOM不兼容。)


在运行Adsense Javascript代码之前,我需要将我的函数附加到
文档。加载
,并且我需要使用DOM功能解析HTML代码。

听起来更像是一个Javascript问题

如果您使用以下框架,所有这些都会变得容易得多:它将允许您从javascript代码轻松访问DOM

例如,请参阅官方教程,以轻松操作页面的DOM

以下是本页的摘录:

我们从一个空的html页面开始:

 <html>                                                                  
 <head>                                                                  
 <script type="text/javascript" src="jquery.js"></script>          
 <script type="text/javascript">                                         
   // we will add our javascript code here                                     
 </script>                                                               
 </head>                                                                 
 <body>                                                                  
   <!-- we will add our HTML content here -->                                        
 </body>                                                                 
 </html>
作为一个例子,在该函数中添加警报没有多大意义 警报不要求加载DOM。所以,让我们试试看 稍微复杂一点:单击链接时显示警报

将以下内容添加到


然后,您只需在Delphi、C++或C代码中添加JavaScript,生成纯文本。您必须将Google AdSense代码插入

$(文档)的主页。准备好处理程序。

使用delphi您可以执行以下操作:

procedure TForm1.FormCreate(Sender: TObject);
begin
  WebBrowser1.Navigate('http://stackoverflow.com');
end;

procedure TForm1.WebBrowser1DocumentComplete(Sender: TObject; 
  const pDisp: IDispatch; var URL: OleVariant);
var
  Script: WideString;
begin
  Script := 'document.onload=alert("boo!");';
  if (pDisp as IWebBrowser) <> nil then
    ((pDisp as IWebBrowser).Document as IHTMLDocument2).parentWindow.execScript(Script, 'JScript');
end;
过程TForm1.FormCreate(发送方:TObject);
开始
WebBrowser1.导航('http://stackoverflow.com');
结束;
程序TForm1.WebBrowser1文档完成(发件人:ToObject;
常量pDisp:IDispatch;变量URL:OleVariant);
变量
脚本:宽字符串;
开始
脚本:='document.onload=alert(“boo!”);';
如果(pDisp作为IWebBrowser)为零,则
((pDisp作为IWebBrowser)。文档作为IHTMLDocument2.parentWindow.execScript(脚本“JScript”);
结束;
这里还有一些关于的附加信息。这对你的情况可能有用。 请注意:

TEventObject=class(TDebugInterfacedObject,IDispatch)
应声明为:
TEventObject=class(TInterfacedObject,IDispatch)

如果需要从外部(而不是像jQuery那样从内部)访问DOM,那么可以使用Delphi轻松完成。但是,您应该首先安装优秀的嵌入式web浏览器组件
TEmbeddedWB
,通过该组件可以非常轻松地使用浏览器

TEmbeddedWB
组件放到表单上,并添加一个处理程序,例如
OnDocumentComplete
,该处理程序在文档的DOM完全可访问时引发:

procedure TForm1.EmbeddedWB1DocumentComplete(ASender: TObject; const pDisp: IDispatch; var URL: OleVariant);
begin
  // check that the event is raised for the outermost browser (not frames or iframes)
  if (pDisp as IUnknown) = (EmbeddedWB1.ControlInterface as IUnknown) then
  begin
    // do your work here
    // example: show a message 
    EmbeddedWB1.ExecScript('eval("alert(''Hello'')")', '');
  end;
end;
启动导航以测试此功能:

EmbeddedWB1.Navigate('http://www.google.com');

这是不可能的:(我不能在文档提交之前访问DOM!在系统编程中,也许我可以访问,但我没有像document.load之前那样的事件,如果我喜欢那个事件,是的,我可以使用您的示例,但是html文档已经准备就绪(状态已经就绪)例如,感谢特拉玛,你是一个非常优秀的程序员,我用你给我展示的方法解决了我的问题:)doc.onreadystatechange:=(TEventObject.Create(DocReadyStateChangeProc)as IDispatch);你查过邮局吗。看起来你也要做类似的事情。谢谢特拉玛,你是一个非常好的程序员,我用你给我演示的方法解决了我的问题:)doc.onreadystatechange:=(TEventObject.Create(DocReadyStateChangeProc)as IDispatch)@特拉玛,很好的链接:)你有没有实现过
WebBrowser1.Document.InvokeScript
?@kobik,没有经验,但也许等我有时间我会试试:)不管怎样,我仍然想知道为什么有这么多人否决这种“恶意软件创建”问题。我知道这似乎是恶意的,但请注意您可以做些什么,例如,使用
HWND_广播
等@TLama,我同意您关于否决票的看法。。。也许这是网站的政策。不知道我不喜欢政治。顺便说一句,
InvokeScript
的实现可以在
EwbTools.pas
(TEmbeddedWB)方法
WBExecScript
中找到。(虽然有点乱。可以优化):)我已经在使用EmbeddedWB核心库:)但是我不能使用VCL组件(TEmbeddedWB)。我需要找到活动的internet explorer窗口,以便在活动的internet explorer中操作html代码。
procedure TForm1.FormCreate(Sender: TObject);
begin
  WebBrowser1.Navigate('http://stackoverflow.com');
end;

procedure TForm1.WebBrowser1DocumentComplete(Sender: TObject; 
  const pDisp: IDispatch; var URL: OleVariant);
var
  Script: WideString;
begin
  Script := 'document.onload=alert("boo!");';
  if (pDisp as IWebBrowser) <> nil then
    ((pDisp as IWebBrowser).Document as IHTMLDocument2).parentWindow.execScript(Script, 'JScript');
end;
procedure TForm1.EmbeddedWB1DocumentComplete(ASender: TObject; const pDisp: IDispatch; var URL: OleVariant);
begin
  // check that the event is raised for the outermost browser (not frames or iframes)
  if (pDisp as IUnknown) = (EmbeddedWB1.ControlInterface as IUnknown) then
  begin
    // do your work here
    // example: show a message 
    EmbeddedWB1.ExecScript('eval("alert(''Hello'')")', '');
  end;
end;
EmbeddedWB1.Navigate('http://www.google.com');