2010-03-07 141 views
0

我目前正在使用.net WebBrowser控件工作所见即所得编辑器,并且需要执行拼写检查。如何在鼠标指针WebBrowser控件下获取文本?

我的问题是我怎样才能得到鼠标指针下的文本,当我右键单击拼写错误的单词来显示所有拼写建议?

试图用Javascript事件包装html标签中的每个拼写错误的单词,但似乎是从JavaScript调用C#代码的问题。

+0

您可以使用............. 光标:指针; .......在CSS – jjj 2010-03-07 11:59:58

+0

哪个WebBrowser控件? – 2010-08-12 20:27:42

回答

1

好的 - 这里是我的2美分。

首先,我想象你有一个可编辑的元素更可能是一个div,你用这个作为你所见即所得的编辑器。我还猜测你有一个Ajax函数,你可以在某个按键上设置某个地方来检查DIV内容的整个(甚至可能是某些)的拼写,并且它可以发送一个拼写错误的单词列表。

我的想法是 - 1.在可编辑div的内容上创建一个范围,然后使用TextRange对象搜索单词 - 这里:http://msdn.microsoft.com/en-us/library/ms535872%28VS.85%29.aspx。使用findText方法搜索文档中的文本(范围),并定位范围的开始点和结束点以包含搜索字符串。

一旦你有这个,你应该将文本值复制到一个变量,然后构造一个<跨度>甚至可能设置跨度的底部边框样式有一个红色下划线,甚至使用图像,使其看起来像普通拼写错误的波浪一样。将此Span的内容设置为原始拼写错误的单词的值。另外,不要忘记为此SPAN分配一个onclick(或右键单击),以便您稍后可以对拼写建议进行其他查找。太好了,现在你有一个离线的SPAN,但它还没有插入到文档中。

下一步:使用TextRange pasteHTML方法将新的SPAN粘贴到文档中,记住范围应该已经从查找操作中定义,所以你不应该再乱来寻找文本(或选择它)。

一旦跨度在使用pasteHTML的文档中,它应该是直截了当的,只需创建另一个div,绝对将其置于SPAN下,这样当用户右键单击它时 - “上下文菜单出现” - 由阿贾克斯。

之后,它应该是一个非常简单的情况下创建另一个范围,并用简单的文本替换这次SPAN。

这一切都是理论,但希望它有帮助!

而且你可能想看看 - http://www.aspfree.com/c/a/Code-Examples/Searching-Body-Text-with-textRange-Enter-the-Gecko/ - 这将帮助您在FireFox(不仅是IE)整体解决方案的工作

-1

我会添加一些更因为我目前正在对两分钱相似的东西。

好吧,所以我假设你是一个WebBrowser对象?如果是这样,我的建议是每次你右键单击时使用上下文菜单条。从那里你可以触发上下文菜单打开事件,将为你抓取特定的HTML元素。

总之你可以使用类似的代码片断

Point mouseLocation; 

    private void ToolStripMenuItem_Click(object sender, EventArgs e) 
    { 
     HtmlElement elem = webBrowser.Document.GetElementFromPoint(mouseLocation); 
     //From here you would do what ever it is you need for your element in the browser 
    } 

    private void webContextMenuStrip_Opening(object sender, CancelEventArgs e) 
    { 
     //This just gets you the specific mouse position for the given element 
     mouseLocation = webBrowser.PointToClient(MousePosition); 
    } 

希望这ATLEAST让你开始和好运!

相关问题