|
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.
|