понеділок, 29 липня 2013 р.

Як відкрити кілька посилань одним кліком

Доповнення до бібліотеки для роботи з HTML. Функція генерує гіпер-посилання. Особливістю функції є те, що в якості аргументу можна передавати кілька посилань, які в результаті будуть відкриті в кількох вікнах переглядача.


Одне але. Більшість сучасних переглядачів блокують такі виринаючі вікна. Як це оминути, поки не знаю. Варіант в html взято тут:

<a href="http://www.Link1.com/" target="_blank" onmouseover="window.open(&quot;&quot;http://www.Link2.com&quot;&quot;);window.open(&quot;&quot;http://www.Link3.com&quot;&quot;);">Click Here Link Bucket</a>

Оголошення функції:
 THtmlLib = class(TObject)
  ...
    {
     Description:
       Повертає тег гіпер-посилання. Може приймати на вхід кілька посилань, розділених заданим символом
     Parameters:
       aLink      - текст гіпер-посилання
       aTitle     - текст, що буде відображаться в документі на місці посилання
       aDelimiter - розділювач кількох посилань
    }
    class function GetHrefTag(const aLink, aTitle: string; aDelimiter: Char = ';'): string;

Реалізація функції
class function THtmlLib.GetHrefTag(const aLink, aTitle: string; aDelimiter: Char = ';'): string;
var
  arrLink : System.TArray<System.string>;
  i       : Byte;
  sLink   : string;
begin
 Result := aTitle;
 if not aLink.IsEmpty then
 begin
   arrLink := aLink.Split(aDelimiter);
   sLink := '<a href="';
   for i := Low(arrLink) to High(arrLink) do
   begin
     if (i = Low(arrLink)) then
       sLink := Concat(sLink, arrLink[i], '" target="_blank" onmouseover="')
     else
       sLink := Concat(sLink, 'window.open(&quot;&quot;', arrLink[i], '&quot;&quot;);');
   end;
   Result := Concat(sLink, '">', aTitle, '</a>');
 end;
end;

Немає коментарів :

Дописати коментар