【问题标题】:C# WebKit and CKEditor iframe scrapingC# WebKit 和 CKEditor iframe 抓取
【发布时间】:2014-01-22 02:23:58
【问题描述】:

目前我正在处理我的项目,该项目涉及在 c# 中使用 webbrowser 控件。经过多次努力,我成功地将 WebKit 加入 WinForms 应用程序并使用 CKEditor 运行网站,但它给了我 2 个问题。

1 图片上传器工作正常,但不发送回调或 WebKit 无法处理。有没有可能让它发挥作用?

2 当我尝试通过这样做来抓取 html 文档以获取 iframe 时:webKitBrowser1.Document.GetElementById("cke_1_contents").LastChild 我得到 iframe 元素但我不知道如何获取它的内容,因为它说我没有'没有任何孩子。

谁能建议我下一步该做什么或为此提供任何替代方案?

我使用 VS2008 和 .NET 3.5。

【问题讨论】:

  • 不是我能回答你的问题,但我已经成功地使用了带有 WinForms 原生 WebBrowser 控件的 CKEditor 4。只需实现WebBrowser Feature Control 即可使CKEditor 正常运行。不需要 WebKit。
  • 好的,我会尽快尝试,但问题是,是否可以获取用户编写的内容?我的意思是,是否有可能获得这个 iframe?
  • 是的,请看我的answer

标签: c# html winforms ckeditor


【解决方案1】:

我无法在基于 WebKit 的控件的上下文中回答这个问题,但我建议您尝试使用原生 WinForms WebBrowser 控件。一旦实现WebBrowser Feature Control,它作为 CKEditor 的主机非常有用。

然后,如果我要使用 CKEditor 在页面上进行网页抓取,我会尝试这样的方法来获取当前的编辑器内容(来自 C#):

dynamic pageDocument = webBrowser.Document.DomDocument;
var ckeDocument = pageDocument.getElementsByClassName("cke_wysiwyg_frame").item(0).contentDocument;
MessageBox.Show((string)ckeDocument.documentElement.outerHTML);

【讨论】:

  • 这很好用,非常感谢。不幸的是,它仍然给我留下了如何将其移植到 .NET 3.5 的问题(如果您知道如何做到这一点,我将非常感激),但现在我至少可以继续进行项目了。
  • @necromos,在 .NET 3.5 中,您可以使用反射而不是 dynamic。看看这个:stackoverflow.com/a/19002650/1768303
  • 你是这方面的魔术师。效果很好,我无法想象找到更好的答案。
  • @necromos,没问题,很高兴它有帮助:)
猜你喜欢
  • 2010-10-29
  • 1970-01-01
  • 2011-07-29
  • 1970-01-01
  • 1970-01-01
  • 2021-05-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多