From: <dos...@us...> - 2013-07-01 20:30:40
|
Revision: 4590 http://sourceforge.net/p/mp-plugins/code/4590 Author: doskabouter Date: 2013-07-01 20:30:37 +0000 (Mon, 01 Jul 2013) Log Message: ----------- - Better handling of <a> elements with onclick handler - Reuse numbers for <a> elements with same href Modified Paths: -------------- trunk/plugins/BrowseTheWeb/Source/BrowseTheWeb/DomHelper.cs trunk/plugins/BrowseTheWeb/Source/BrowseTheWeb/GUIPlugin.cs Modified: trunk/plugins/BrowseTheWeb/Source/BrowseTheWeb/DomHelper.cs =================================================================== --- trunk/plugins/BrowseTheWeb/Source/BrowseTheWeb/DomHelper.cs 2013-07-01 18:54:43 UTC (rev 4589) +++ trunk/plugins/BrowseTheWeb/Source/BrowseTheWeb/DomHelper.cs 2013-07-01 20:30:37 UTC (rev 4590) @@ -1,4 +1,5 @@ using System; +using System.Collections.Generic; using System.Drawing; using System.Linq; using Gecko; @@ -85,6 +86,7 @@ private static void AddLinksToPage(GeckoDocument document, int id) { + Dictionary<string, int> hrefs = new Dictionary<string, int>(); GeckoElementCollection links = document.Links; MyLog.debug("page links cnt : " + links.Count); foreach (GeckoHtmlElement element in links) // no casting to GeckoAnchorElement, because document.links also returns GeckoAreaElemenets @@ -105,9 +107,24 @@ GeckoElement ls = element; while (ls.LastChild != null && ls.LastChild is GeckoElement && !String.IsNullOrEmpty(ls.LastChild.TextContent)) ls = (GeckoElement)ls.LastChild; - insertSpanAfter(id, lastSpan.ClassName, ls); - SetLinkAttributes(element, id); - id++; + + int newId; + string url = element.GetAttribute("href"); + if (!element.HasAttribute("onclick")) + { + if (hrefs.ContainsKey(url)) + newId = hrefs[url]; + else + { + newId = id++; + hrefs.Add(url, newId); + } + } + else + newId = id++; + + insertSpanAfter(newId, lastSpan.ClassName, ls); + SetLinkAttributes(element, newId); } } Modified: trunk/plugins/BrowseTheWeb/Source/BrowseTheWeb/GUIPlugin.cs =================================================================== --- trunk/plugins/BrowseTheWeb/Source/BrowseTheWeb/GUIPlugin.cs 2013-07-01 18:54:43 UTC (rev 4589) +++ trunk/plugins/BrowseTheWeb/Source/BrowseTheWeb/GUIPlugin.cs 2013-07-01 20:30:37 UTC (rev 4590) @@ -956,7 +956,7 @@ return; } - if (ge is GeckoAnchorElement) + if (ge is GeckoAnchorElement && !ge.HasAttribute("onclick")) { string link = ((GeckoAnchorElement)ge).Href; webBrowser.Navigate(link); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |