2015-11-01 124 views
0

我试图创建一个图像元素到Windows窗体web浏览器控件现有网站。然后我想将创建的元素移动到某个位置。我有这个代码,但它不起作用。将图像元素添加到Web浏览器控件页面(现有网站)

private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) 
    { 
     webBrowser1.Document.GetElementById("gpu_notice").Style = "display:none"; 
     webBrowser1.Document.GetElementById("header").OuterHtml = ""; 
     webBrowser1.Document.GetElementById("ads").OuterHtml = ""; 
     webBrowser1.Document.GetElementById("the_game").Style += "position: absolute; top: 0px; right: 0px;"; 
     HtmlElement logo = webBrowser1.Document.CreateElement("logo"); 
     logo.SetAttribute("SRC", @"C:\Users\Susana\Documents\Projeto HaxballK\Design\Logo HK.png"); 
     webBrowser1.Document.Body.AppendChild(logo); 
     logo.SetAttribute("float", "right"); 
    } 

回答

1

该任务是否将元素插入使用WebBrowser类显示的现有HTML文档?如果是,则步骤可能是(没有测试,不好意思)

  1. 下载使用WebClient作为一个HTML字符串文件
  2. 使<body>相对的HTML字符串(插入style='position: relative'<body>元素)
  3. 插入元素到HTML字符串,只是<body>后,使元素绝对(设定style='position: absolute; left=...; right=...'
  4. 的修饰HTML串入WebBrowser
  5. 0123的 DocumentText财产
+0

是的,这是我正在寻找的exacly。我会尝试一下,当你有时间的时候你可以用这些指令编写代码吗? – Khoury39

1

您必须使用“img”标签而不是“logo”并使用file protocol来设置文件路径。

HtmlElement logo = webBrowser1.Document.CreateElement("img"); 
logo.SetAttribute("SRC", @"file:///C:/Users/Susana/Documents/Projeto HaxballK/Design/Logo HK.png"); 
webBrowser1.Document.Body.AppendChild(logo); 
logo.SetAttribute("float", "right"); 

修订

如果您要添加的图片所有的JavaScript初始化已经运行后,只需使用一次性Timer

System.Windows.Forms.Timer timer = new Timer(); 
void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) 
{ 
    // other processes 

    timer.Interval = 1 * 1000 * 5; // 5 seconds 
    timer.Tick += timer_Tick; 
    timer.Start(); 
} 

void timer_Tick(object sender, EventArgs e) 
{ 
    timer.Tick -= timer_Tick; 

    HtmlElement logo = webBrowser1.Document.CreateElement("img"); 
    logo.SetAttribute("SRC", @"file:///C:/Users/Susana/Documents/Projeto HaxballK/Design/Logo HK.png"); 
    webBrowser1.Document.Body.AppendChild(logo); 
    logo.SetAttribute("float", "right"); 
} 
+0

感谢您的回答,我试过了,当页面加载时出现徽标,但当页面完全加载后,图像消失。 – Khoury39

+0

我不能在这个上使用DocumentCompleted事件吗? – Khoury39

+0

@ Khoury39'DocumentCompleted'应该没问题,这段代码只是增加了''。我猜JavaScript可能会删除你的标志,所以试试我更新的答案。 – jhmt