Avatar billede gargantua Nybegynder
03. juni 2007 - 19:08 Der er 44 kommentarer

Hvordan laver jeg en javascript knap som kan åbne et program

Hej,
jeg vil gerne lave en knap på en almindelig html-side ved hjælp af javascript, som kan åbne fx. notepad eller et andet windows program.

Kan det lade sig gøre?

Med venlig hilsen
Jens
Avatar billede windcape Praktikant
03. juni 2007 - 19:09 #1
"Kan det lade sig gøre?" - Nej.
Avatar billede thesurfer Nybegynder
03. juni 2007 - 19:19 #2
Du kan lave et link, til lokationen hvor du *tror* at filen ligger..

Hvis dit link passer, vil browseren spørge om brugeren, om han/hun vil downloade/åbne filen, der jo ligger på hans/hendes computer..

Og så er det op til brugeren at besteme, om han hun overhovedet vil download/åbne programmet..
Avatar billede gargantua Nybegynder
03. juni 2007 - 19:44 #3
Så kan flg kode virke?
<Form>
<input type="button" value"Open AdPhone" onClick="parent.location='C:\Program Files\AdPhone\adphone.exe'">
</Form>
Avatar billede gargantua Nybegynder
03. juni 2007 - 19:51 #4
Nej ovennævnte virker ikke. Men noget må man da kunne gøre. Jeg véd fx at skype har en funktionalitet hvor der bliver installeret en FireFox extension som laver telefonnumre på en side, om til knapper. Hvis man klikker på en knap, så åbner Skype en telefonsamtale med vedkommende.
Avatar billede thesurfer Nybegynder
03. juni 2007 - 20:00 #5
JavaScript er ikke en "FireFox extension"! :-)

Browseren FireFox kan udvides med extensions, så den får udvidet funktionaliteten..

Og det er det der gør, at telefonnumre bliver lavet om til knapper osv..

Skype installere sikkert også en protokol, så numrene f.eks. bliver til:

<a href="skype://1235678">12345678</a>

i stedet for bare: 12345678

Det skal lige siges, at Skype sagtens kunne have valgt et andet navn til protokollen..
Avatar billede thesurfer Nybegynder
03. juni 2007 - 20:05 #6
Du kan evt smide kildekoden til side, hvor telefonnumre bliver til links, herind.. så kigger vi på det..
Avatar billede gargantua Nybegynder
03. juni 2007 - 21:41 #7
Okay,
jeg smider lidt kildekode op i morgen. Jeg er ikke i nærheden af min egen maskine lige nu.
/Jens
Avatar billede olebole Juniormester
04. juni 2007 - 13:10 #8
<ole>

Det, der sker med Skype/FF, svarer til at installere et program på brugerens PC. Det kan man såmænd også gøre med IE og en ActiveX-komponent ... men det kræver under alle omstændigheder, at brugeren tillader det. Det er der forståeligt nok ganske, ganske få, der gør  =)

/mvh
</bole>
Avatar billede gargantua Nybegynder
04. juni 2007 - 14:56 #9
Mht kildekode, har jeg fundet ud af at skype slet ikke ændrer i siden kildekode, når den præsenterer en knap på skærmen i stedet for telefonnummeret.
Så det må være et sted i den installerede plugin at der sker noget. Men hvad, det aner jeg ikke? Hvordan kan det lade sig gøre at præsentere en knap på websiden hos klienten, uden at ændre i sidens kildekode?
Avatar billede olebole Juniormester
04. juni 2007 - 15:01 #10
Ja, det kan som sagt ikke lade sig gøre, uden installeret software  =)

Jeg forstår ikke, hvad du mener med dit sidste spm
Avatar billede thesurfer Nybegynder
05. juni 2007 - 00:06 #11
Det kan det da sagtens lade sig gøre.. :-)

Prøv f.eks. denne her i adresse-feltet (og tryk på ENTER):

java script:document.body.bgColor="#ff0000";void(0)

:-)
Avatar billede roenving Novice
05. juni 2007 - 00:13 #12
>>strandløve

-- har du prøvet det her på siden ?-)
Avatar billede thesurfer Nybegynder
05. juni 2007 - 00:28 #13
Nu har jeg.. og her virker det knap så godt.. højst sandsynligt pga et div der fylder hele skærmen..?

Anyways.. det virker fint på http://www.yahoo.com/ ..

Point var ikke at skifte farve, men at demonstrere at man kan manipulere en webside, uden at ændre på sidens kildekode ("vis kilde")..

Pointen var rettet mod indlægget 04/06-2007 14:56:00.
Avatar billede gargantua Nybegynder
05. juni 2007 - 10:37 #14
Problemet er hvordan jeg kan lave en løsning der minder om skype's knap funktion. Prøv evt at se hér: http://www.skype.com/help/guides/ie_addon/

Jeg ønsker at lave en addon til Internet Explorer som kan parse html siden for telefonnumre og - forhåbentlig uden at ændre sidens kildekode - ændre telefonnummeret til en knap brugeren kan klikke på. Når han klikker på knappen, skal mit softphone  program åbnes og ringe op til nummeret vha min egen protokol.

Håber det afklarer tingene lidt.
Avatar billede olebole Juniormester
05. juni 2007 - 14:06 #15
thesurfer >> Du kan ikke åbne et program fra en webside uden installering af anden software - uagtet, hvad du måtte gøre ved sidens kildekode.

gargantua >> Du kan ikke cross-domain-scripte - så du kan ikke løse problemet, uden brugeren skal installere speciel software. Det er ikke, fordi vi ikke forstår, hvad du mener  =)
Avatar billede thesurfer Nybegynder
05. juni 2007 - 17:06 #16
olebole> Jeg mente at man kunne lave et link, til en lokal fil..
De fleste installerer f.eks. Windows i roden af drev C (dvs "C:\Windows"), og notepad.exe ligger i Windows-mappen..

Så er det op til brugeren, om han/hun vil "downloade" filen, eller åbne den..

Mit indlæg 05/06-2007 00:28:12 var en forklaring til 05/06-2007 00:06:06 ("java script:..."), som var et svar på 04/06-2007 14:56:00 ("ændre i siden med ikke koden"), og havde intet at gøre med at køre programmer på brugerens computer..

Det skulle dog lige være, hvis man ændrede protokollen i et link, så den matchede en protokol, som fik browseren til at åbne et program til at håndterer protokollen.. f.eks. mail, telnet osv..
Avatar billede thesurfer Nybegynder
05. juni 2007 - 17:08 #17
Rettelser:
"ændre i siden men ikke koden"

PS: Sig endeligt til, hvis der er noget der kan misforståes.
Avatar billede olebole Juniormester
06. juni 2007 - 14:05 #18
thesurfer >> Så nærmer en truende forståelse sig  ;o)

Jeg er dog ret sikker på, spørgeren ønsker noget betydeligt mere avanceret  =)
Avatar billede thesurfer Nybegynder
06. juni 2007 - 21:55 #19
Hmm.. der behøver ikke at være "betydeligt mere avanceret"..

Jeg har lavet et simpelt ban-system, som jeg implementerer direkte på ekspertens sider, vha proxy softwaren Proxomitron.

Det Promomitron gør, er at erstatte "</head>" med f.eks. "<script... src='mit-ban-script.js'></script></head>".

Mit script gør så det, at den checker navnet på opretteren/spørgeren, op mod min liste over banned-users..
Hvis den finder brugernavn i listen, erstattes stylen på linken med følgende:

"padding:3px;color: #ffff00; background-color:#000000;";

Hvis man ikke orker at smide det i en htm fil, for at se hvordan det ser ud, kan jeg fortælle jer, at navnet står med gult på sort baggrund.. meget tydeligt.. :-)

Ban-scriptet tilføjer også en onclick-evevt, som giver mig mulighed for at se, hvorfor jeg har banned brugeren, via en window.confirm.. og naturligvis for at se brugerprofilen, som er standard linket ("...bruger.phtml?navn=BrugerNavnetIndsættesHer)..
Avatar billede thesurfer Nybegynder
06. juni 2007 - 21:59 #20
Hehe.. Mange siger at stavefejl er gratis.. i mit forrige indlæg, var der vist dømt "happy hour".. :-)

Dobbelt så mange stavefejl, og dobbelt så gratis.. :-)
Avatar billede olebole Juniormester
07. juni 2007 - 12:58 #21
Jeg bliver mere og mere sikker på, vi opfatter spørgeren og hans behov forskelligt  =)
Avatar billede lestrata Nybegynder
12. juni 2007 - 10:59 #22
Se om du kan bruge det her, <a href="file:///C|/windows/notepad.exe">Kør notepad</a>
Avatar billede olebole Juniormester
13. juni 2007 - 13:16 #23
- det kan han ikke  =)
Avatar billede thesurfer Nybegynder
25. juni 2007 - 03:06 #24
gargantua> Er du kommet videre?
Avatar billede gargantua Nybegynder
26. juni 2007 - 10:24 #25
Desværre nej,
jeg har brugt en del tid på at gennemsøge forskellige websider efter svar, men har trukket nitter indtil videre.
Problemet er stadig, hvordan laver jeg en skype-lign. knap til at vise et telefonnummer på en webside, uden at ændre sidens kildekode.

/Jens
Avatar billede olebole Juniormester
26. juni 2007 - 11:42 #26
Kære ven, hvordan vil du anbringe et barnesæde i en bil uden at ændre dens indretning? Du har brug for en trylleformular ... ikke en kodestump  =)
Avatar billede thesurfer Nybegynder
26. juni 2007 - 14:04 #27
Hvis du kan lave et plugin, extension, ActiveX-komponent eller ligende, kan du måske afvikle JavaScript code ved load.

Med JavaScript kan du ændre en sides layout, uden at man kan se ændringerne i koden.

Hvis brugeren vælger at installere dit plugin, har du en chance. Ellers ikke.
Avatar billede thesurfer Nybegynder
07. juli 2007 - 23:09 #28
gargantua> Hvordan går det? :-)
Avatar billede gargantua Nybegynder
10. juli 2007 - 19:47 #29
Jamen det går sådan at jeg er ved at lære lidt om extensions til IE, og hvordan jeg laver noget javascript kode.

Jeg er på min vej faldet over XForms som jeg er ved at studere nærmere, for at se om det kunne bruges til noget.

Hilsen
G.
Avatar billede gargantua Nybegynder
10. juli 2007 - 19:51 #30
Åh ja, så er det også lykkedes mig at aflure noget javekode fra Skype, som jeg tror viser hvordan man laver knapper på websiden.                                                                   
                                           
var skype_injection_path='chrome://skype_ff_toolbar_win/content/';
var skype_tool=null;

//FLAG TOOLTIP
function HideSkypeFull()
{
  skype_active=false;
//  document.getElementById('skype_dc').style.visibility="hidden";
  skype_tool.hide_flag_tooltip();
}

function ShowSkype(event)
{
  skype_active=true;
  skype_tool.show_flag_tooltip(event.screenX, event.screenY);
//  DoShowSkype(event.pageX+2, event.pageY-20);
}

function DoShowSkype(cX, cY)
{
/*  var menu=document.getElementById('skype_dc');
  menu.style.visibility="visible";

  menu.style.left=cX+'px';
  menu.style.top=cY+'px';
*/
}

function doSkypeFlag(obj,brd)
{
  obj.style.borderColor = brd;
}

//COMMANDS
function SkypeToolBarInit(tb)
{
    skype_tool=tb;
}

function doRunCMD(link, id, name)
{
  if (skype_tool)
  {
      if (link == 'chdial')
        skype_tool.chprefix(id, document);
    else if (link == 'copy')
        skype_tool.copy_num(id, document);
    else if (link == 'sms')
        skype_tool.sms(id);
    else if (link == 'add')
        skype_tool.add(id, name);
    else if (link == 'fax')
        skype_tool.fax(id, name);
    else
          skype_tool.call(id);
  }
}

function runCMD(link)
{
  HideSkypeFull();
  doRunCMD(link, skype_curid, skype_cur_name);
}


function skype_tb_imgOnOff(e,onoff,id)
{
    var node=e.originalTarget;
    while(!(node.tagName.toLowerCase() == 'span' && node.getAttribute('id') == '__skype_highlight_id'))
    {
        node=node.parentNode;
    }

    if (node.getAttribute('fax') != 'true')
    {
        if (node.getAttribute('rtl') == 'false')
        {
            node.childNodes.item(1).src=(onoff=='_on')?skype_injection_path+'call_small_on.gif':skype_injection_path+'call_small_off.gif';
            node.childNodes.item(2).setAttribute('class', (onoff=='_on')?'skype_tb_injectionInAct':'skype_tb_injectionIn');
            node.childNodes.item(3).src=(onoff=='_on')?skype_injection_path+'active_r.gif':skype_injection_path+'inactive_r.gif';
        }
        else
        {
            node.childNodes.item(2).src=(onoff=='_on')?skype_injection_path+'call_small_on.gif':skype_injection_path+'call_small_off.gif';
            node.childNodes.item(1).setAttribute('class', (onoff=='_on')?'skype_tb_injectionInAct':'skype_tb_injectionIn');
            node.childNodes.item(0).src=(onoff=='_on')?skype_injection_path+'active_r.gif':skype_injection_path+'inactive_r.gif';
        }
    }
    else
    {
        if (node.getAttribute('rtl') == 'false')
        {
            node.childNodes.item(1).src=(onoff=='_on')?skype_injection_path+'fax/fax_small_on.gif':skype_injection_path+'fax/fax_small_off.gif';
            node.childNodes.item(2).setAttribute('class', (onoff=='_on')?'skype_tb_injectionInAct':'skype_tb_injectionIn');
            node.childNodes.item(3).src=(onoff=='_on')?skype_injection_path+'fax/active_r.gif':skype_injection_path+'fax/inactive_r.gif';
            node.childNodes.item(0).src=(onoff=='_on')?skype_injection_path+'fax/active_l.gif':skype_injection_path+'fax/inactive_l.gif';
        }
        else
        {
            node.childNodes.item(2).src=(onoff=='_on')?skype_injection_path+'fax/fax_small_on.gif':skype_injection_path+'fax/fax_small_off.gif';
            node.childNodes.item(1).setAttribute('class', (onoff=='_on')?'skype_tb_injectionInAct':'skype_tb_injectionIn');
            node.childNodes.item(0).src=(onoff=='_on')?skype_injection_path+'fax/active_r.gif':skype_injection_path+'fax/inactive_r.gif';
            node.childNodes.item(3).src=(onoff=='_on')?skype_injection_path+'fax/active_l.gif':skype_injection_path+'fax/inactive_l.gif';
        }
    }

}

//MENU
var skype_curid=0,skype_active=false,skype_showseed=0,skype_ctm=0,skype_cur_name='';
function HideSkypeMenu()
{
    if(!skype_active)
        HideSkypeMenuFull();
      else
        setTimeout("HideSkypeMenu()",1000);
}

function HideSkypeMenu2()
{
      skype_showseed=0;
      if(!skype_active)
        HideSkypeMenuFull();
      else
    {
        skype_active=false;
        setTimeout("HideSkypeMenu()",1000);
      }
}

function HideSkypeMenuFull()
{
  skype_active=false;
//  document.getElementById('skype_menu').style.visibility="hidden";
}

function CheckSkype()
{
  skype_active=true;
}

function ShowSkypeMenu(event, call_msg, id, callto, isMobile, name)
{
try{
  /*    skype_active=true;
      if(document.getElementById('skype_menu').style.visibility!="hidden" && skype_curid==id)
        return;
      skype_showseed=Math.random();
      clearTimeout(skype_ctm);
    var obj=event.originalTarget;
    if (!obj)
        obj=event;                      //alert(obj);
      var brd=getBounds(obj);
      var pcx=brd.left, pcy=brd.top+15;  //alert('('+pcx+', '+pcy+') - ('+event.x+', '+event.y+')');

      skype_ctm=setTimeout('DoShowSkypeMenu(\''+call_msg+'\','+skype_showseed+',"'+callto+'",'+pcx+','+pcy+','+isMobile+',"'+name+'")',0);
  */

  if (event.button != 0) return;

  event.stopPropagation();
  /*event.preventBubble();*/
  skype_tool.rclick(event);

}catch(e){ }
}

function DoShowSkypeMenu(call_msg, seed, callto, pcx, pcy, isMobile, name)
{
try{
/*      if(seed!=skype_showseed)
        return;
      skype_showseed=0;
      skype_curid=callto;
    skype_cur_name=name;
      var menu=document.getElementById('skype_menu');

    /*
    var m_name=new String(name);
      if(name.length>16)
        m_name=m_name.substring(0,13)+'...';
      document.getElementById('name_text').innerHTML=call_msg;
    * /

      var docelem = document.documentElement;
      if ((docelem.scrollTop == 0 && document.body.scrollTop != 0) || (docelem.scrollLeft == 0 && document.body.scrollLeft != 0))
          docelem=document.body;

      scrollY=docelem.scrollTop;
      scrollX=docelem.scrollLeft;

      var my=pcy, mx=pcx, mby=docelem.clientHeight+scrollY, mbx=docelem.clientWidth-192+scrollX;
      if(my>mby) my=mby;
      if(my<scrollY) my=scrollY;
      if(mx>mbx) mx=mbx;
      if(mx<scrollX) mx=scrollX;

      menu.style.left=mx+'px';
      menu.style.top=my+'px';

    skype_tool.doFixMenu(menu, isMobile, document);

    menu.style.visibility="visible";
*/
}catch(e){ }
}

function doSkypeArrow(obj,onoff)
{
  obj.src=(onoff=='_on')?skype_injection_path+'active_ln.gif':skype_injection_path+'inactive_ln.gif';
}

function SetBgColor(obj, color)
{
try{
  obj.lastChild.style.backgroundColor = color;
}catch(e){ }
}

function getBounds(element)//event)
{
try{
    //var element=event.originalTarget;
    var left = element.left;    //event.clientX;
      var top = element.top;        //event.clientY;
      if (document.location.toString().indexOf('local.google') == -1)
      {
        while(!(element.tagName.toLowerCase() == 'span' && element.getAttribute('id') == '__skype_highlight_id'))
        {
            element=element.parentNode;
        }
        left = element.offsetLeft;
        top = element.offsetTop;

          for (var parent = element.offsetParent; parent; parent = parent.offsetParent)
          {
            left += parent.offsetLeft;
            top += parent.offsetTop;
            /*
            if (parent.tagName.toLowerCase() == 'table' && parent.parentNode && parent.childNodes
                && parent.childNodes.item(0) && parent.parentNode.tagName.toLowerCase() == 'body')
            {
                for(var j=0; j<parent.childNodes.length; j++)
                    if (parent.childNodes.item(j).nodeType == parent.childNodes.item(j).ELEMENT_NODE
                        && parent.childNodes.item(j).tagName.toLowerCase() == 'tbody')
                        break;
                if (j!=parent.childNodes.length)
                {
//                                        alert(parent.childNodes.item(j));
//                    alert(parent.offsetParent.offsetWidth +' - '+ parent.childNodes.item(j).offsetWidth);
                    left -= parent.offsetLeft;
                    left += (parent.offsetParent.offsetWidth - parent.childNodes.item(j).offsetWidth)/2;
                }
            }
            */
          }
      }

      return {left: left, top: top, width: element.offsetWidth, height: element.offsetHeight};
}catch(e){ }
}
Avatar billede gargantua Nybegynder
10. juli 2007 - 19:52 #31
Jeg fatter bare ikke meget af koden endnu, for jeg er ikke lige nogen javascript-haj.
Avatar billede olebole Juniormester
11. juli 2007 - 11:36 #32
Det er noget kode specielt til Firefox - og den kræver, brugeren har installeret ekstra software
Avatar billede thesurfer Nybegynder
27. juli 2007 - 10:59 #33
Citat fra 05/06-2007 10:37:27:
---
Problemet er hvordan jeg kan lave en løsning der minder om skype's knap funktion. Prøv evt at se hér: http://www.skype.com/help/guides/ie_addon/

Jeg ønsker at lave en addon til Internet Explorer som kan parse html siden for telefonnumre og - forhåbentlig uden at ændre sidens kildekode - ændre telefonnummeret til en knap brugeren kan klikke på. Når han klikker på knappen, skal mit softphone  program åbnes og ringe op til nummeret vha min egen protokol.

Håber det afklarer tingene lidt.
---

Du skal lige huske på, at brugeren skal tillade dette addon, før det kan bruges.

Derefter kunne du henvise brugeren til et eller andet på din webside, hvor man kan downloade dit program, som installerer protokollen i browserne.

Eksempel:
<a href="softphone://12345678">ring til 12345678</a>

Så vil browseren åbne adressen "12345678" med dit program.

Men det kræver at alle brugerne har protokollen installeret.. hvilket vel ikke skulle være noget problem, hvis de alligevel har dit program installeret..
Avatar billede gargantua Nybegynder
31. juli 2007 - 07:50 #34
Det er netop meningen brugerne skal installere min IE toolbar, som har ovennævnte funktionalitet.
Med fare for at lyde dum, hvordan laver jeg en sådan protokol?
Avatar billede olebole Juniormester
31. juli 2007 - 14:35 #35
Jamen, en toolbar ... så er der vel ingen restriktioner. Til gengæld skal det jo ikke gøres med JavaScript  =)
Avatar billede thesurfer Nybegynder
31. juli 2007 - 17:33 #36
Hmm... det nemmeste er nok at lave en ActiveX komponent via Microsoft Visual Basic.

Det er ikke noget jeg har erfaring med, selvom jeg har programmet i VB i noget tid.. men er nu igang med C#..
Avatar billede thesurfer Nybegynder
22. august 2007 - 00:45 #37
gargantua> Er du der?
Avatar billede gargantua Nybegynder
24. august 2007 - 19:41 #38
Hm, jo da.
Avatar billede thesurfer Nybegynder
24. august 2007 - 20:07 #39
Hvor langt er du kommet?

Jeg kan se at du har oprettet spørgsmålet "HVordan laver jeg en custom Internet Explorer Toolbar?" ( http://www.eksperten.dk/spm/781758 ).. men har ikke fået svar endnu..

Jeg lavede en simpel søgning på "vb.net activex" på Google, og fik blandet andet nedenstående..

Søgningen: http://www.google.com/search?q=vb.net+activex


Nogle resultater:

"Writing an ActiveX Control in VB.NET"
http://www.vbdotnetheaven.com/UploadFile/dsandor/ActiveXControlInVBdotNET04112005081747AM/ActiveXControlInVBdotNET.aspx

"ActiveX in C# or VB.NET" (snak om ActiveX og Web Control via VB.NET):
Avatar billede thesurfer Nybegynder
24. august 2007 - 20:08 #40
Rettelse:

Hvor langt er du kommet?

Jeg kan se at du har oprettet spørgsmålet "HVordan laver jeg en custom Internet Explorer Toolbar?" ( http://www.eksperten.dk/spm/781758 ).. men har ikke fået svar endnu..

Jeg lavede en simpel søgning på "vb.net activex" på Google, og fik blandet andet nedenstående..

Søgningen: http://www.google.com/search?q=vb.net+activex


Nogle resultater:

"Writing an ActiveX Control in VB.NET"
http://www.vbdotnetheaven.com/UploadFile/dsandor/ActiveXControlInVBdotNET04112005081747AM/ActiveXControlInVBdotNET.aspx

"ActiveX in C# or VB.NET" (snak om ActiveX og Web Control via VB.NET):
http://channel9.msdn.com/ShowPost.aspx?PostID=32483
Avatar billede olebole Juniormester
25. august 2007 - 00:30 #41
- og den kan også skrives i VB-classic. Der er Google også din ven  ;o)
Avatar billede thesurfer Nybegynder
25. august 2007 - 14:23 #42
Der er forskel på VB og VB.NET.. :-)

Hmm.. jeg kan ikke lige se, hvorfor jeg har søgt på VB.NET..

I oversigten over oprettede spørgsmål, kan jeg se at gargantua har oprettet spørgsmål i C#..

Så foretag samme søgning, bare med C# i stedet for VB.NET.. :-)
Avatar billede olebole Juniormester
25. august 2007 - 15:47 #43
Naturligvis er der forskel på VB og VB.NET ... ellers havde jeg jo ikke skrevet, at man også kunne med VB  ;o)
Avatar billede thesurfer Nybegynder
25. august 2007 - 15:55 #44
Hehe :-)

Jeg mente bare, at når gargantua nu programmerede i VB.NET, kunne han ikke bruge VB ("Classic") til noget, da man normalt bruger Visual Studio til VB.NET, som ikke understøtter VB.. :-)

Men det viser sig, at gargantua muligvis programmerer i C# (ifølge de oprettede spørgsmål i oversigten).. så kan det være lidt lige meget.. :-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester