Avatar billede mcardle Nybegynder
23. november 2005 - 02:42 Der er 20 kommentarer og
1 løsning

Jeg skal have lavet et target på et link.

Hej Eksperter.
Jeg er ikke den store haj i JavaScript, men jeg burde kunne lave et target til min division.

Jeg har denne kode og der må ikke ændres i den, da den høre sammen med et script, derfor class'en.

<span class="coolButton" style="width:100px" onClick="window.location='http://dynamicdrive.com'">

Kan man lave et target efter linket i onClick'et...?

//mcardle
Avatar billede olebole Juniormester
23. november 2005 - 03:34 #1
<ole>

Du kan prøve at køre et script noget à la dette, efter siden er loaded og alle evt. onload-scripts er kørt:

var aSp = document.getElementsByTagName("span");
for (var i=0; i<aSp.length; i++) {
    if (aSp[i].className=="coolButton") {
        sFunc = aSp[i].onclick.toString()
        sFunc = sFunc.replace(/function[^\{]*\{([^\}]*)\}/gi, function($1, $2){return $2.replace("window", "frames.foo")});
        aSp[i].onclick = function(){eval(sFunc)};
    }
}

- hvor 'frames.foo' er adressen på den frame, dokumentet skal loades i. Hvad den adresse er, kan jeg ikke vide udfra det, du skriver

/mvh
</bole>
Avatar billede mcardle Nybegynder
23. november 2005 - 13:01 #2
Jeg skal bare have lavet en target="_blank", men document.link.target="_blank" virker ikke. Jeg har prøvet at sætte den ind sådan:

<span class="coolButton" style="width: 100px;" onClick="window.location='http://mit_link.html'; document.link.target='_blank';">

Det virker ikke.

//mcardle
Avatar billede mcardle Nybegynder
23. november 2005 - 13:02 #3
Det her er mit coolButton class-script:

///////////////////////////////////////////////////////////////////////
//    This Button Script was designed by Erik Arvidsson for WebFX  //
//                                                                  //
//    For more info and examples see: http://webfx.eae.net/        //
//    or send mail to erik@eae.net                                  //
//                                                                  //
//    Feel free to use this code as lomg as this disclaimer is      //
//    intact.                                                      //
///////////////////////////////////////////////////////////////////////

document.onmouseover = doOver;
document.onmouseout  = doOut;
document.onmousedown = doDown;
document.onmouseup  = doUp;


function doOver() {
    var toEl = getReal(window.event.toElement, "className", "coolButton");
    var fromEl = getReal(window.event.fromElement, "className", "coolButton");
    if (toEl == fromEl) return;
    var el = toEl;
   
//    alert(el);
   
//    var cDisabled = el.getAttribute("cDisabled");
    var cDisabled = el.cDisabled;
//    alert(cDisabled);
    cDisabled = (cDisabled != null); // If CDISABLED atribute is present
   
    if (el.className == "coolButton")
        el.onselectstart = new Function("return false");
   
    if ((el.className == "coolButton") && !cDisabled) {
        makeRaised(el);
        makeGray(el,false);
    }
}

function doOut() {
    var toEl = getReal(window.event.toElement, "className", "coolButton");
    var fromEl = getReal(window.event.fromElement, "className", "coolButton");
    if (toEl == fromEl) return;
    var el = fromEl;

//    var cDisabled = el.getAttribute("cDisabled");
    var cDisabled = el.cDisabled;
    cDisabled = (cDisabled != null); // If CDISABLED atribute is present

    var cToggle = el.cToggle;
    toggle_disabled = (cToggle != null); // If CTOGGLE atribute is present

    if (cToggle && el.value) {
        makePressed(el);
        makeGray(el,true);
    }
    else if ((el.className == "coolButton") && !cDisabled) {
        makeFlat(el);
        makeGray(el,true);
    }

}

function doDown() {
    el = getReal(window.event.srcElement, "className", "coolButton");
   
    var cDisabled = el.cDisabled;
    cDisabled = (cDisabled != null); // If CDISABLED atribute is present
   
    if ((el.className == "coolButton") && !cDisabled) {
        makePressed(el)
    }
}

function doUp() {
    el = getReal(window.event.srcElement, "className", "coolButton");
   
    var cDisabled = el.cDisabled;
    cDisabled = (cDisabled != null); // If CDISABLED atribute is present
   
    if ((el.className == "coolButton") && !cDisabled) {
        makeRaised(el);
    }
}


function getReal(el, type, value) {
    temp = el;
    while ((temp != null) && (temp.tagName != "BODY")) {
        if (eval("temp." + type) == value) {
            el = temp;
            return el;
        }
        temp = temp.parentElement;
    }
    return el;
}

function findChildren(el, type, value) {
    var children = el.children;
    var tmp = new Array();
    var j=0;
   
    for (var i=0; i<children.length; i++) {
        if (eval("children[i]." + type + "==\"" + value + "\"")) {
            tmp[tmp.length] = children[i];
        }
        tmp = tmp.concat(findChildren(children[i], type, value));
    }
   
    return tmp;
}

function disable(el) {

    if (document.readyState != "complete") {
        window.setTimeout("disable(" + el.id + ")", 100);    // If document not finished rendered try later.
        return;
    }
   
    var cDisabled = el.cDisabled;
   
    cDisabled = (cDisabled != null); // If CDISABLED atribute is present

    if (!cDisabled) {
        el.cDisabled = true;
       
        el.innerHTML = '<span style="background: buttonshadow; width: 100%; height: 100%; text-align: center;">' +
                        '<span style="filter:Mask(Color=buttonface) DropShadow(Color=buttonhighlight, OffX=1, OffY=1, Positive=0); height: 100%; width: 100%%; text-align: center;">' +
                        el.innerHTML +
                        '</span>' +
                        '</span>';

        if (el.onclick != null) {
            el.cDisabled_onclick = el.onclick;
            el.onclick = null;
        }
    }
}

function enable(el) {
    var cDisabled = el.cDisabled;
   
    cDisabled = (cDisabled != null); // If CDISABLED atribute is present
   
    if (cDisabled) {
        el.cDisabled = null;
        el.innerHTML = el.children[0].children[0].innerHTML;

        if (el.cDisabled_onclick != null) {
            el.onclick = el.cDisabled_onclick;
            el.cDisabled_onclick = null;
        }
    }
}

function addToggle(el) {
    var cDisabled = el.cDisabled;
   
    cDisabled = (cDisabled != null); // If CDISABLED atribute is present
   
    var cToggle = el.cToggle;
   
    cToggle = (cToggle != null); // If CTOGGLE atribute is present

    if (!cToggle && !cDisabled) {
        el.cToggle = true;
       
        if (el.value == null)
            el.value = 0;        // Start as not pressed down
       
        if (el.onclick != null)
            el.cToggle_onclick = el.onclick;    // Backup the onclick
        else
            el.cToggle_onclick = "";

        el.onclick = new Function("toggle(" + el.id +"); " + el.id + ".cToggle_onclick();");
    }
}

function removeToggle(el) {
    var cDisabled = el.cDisabled;
   
    cDisabled = (cDisabled != null); // If CDISABLED atribute is present
   
    var cToggle = el.cToggle;
   
    cToggle = (cToggle != null); // If CTOGGLE atribute is present
   
    if (cToggle && !cDisabled) {
        el.cToggle = null;

        if (el.value) {
            toggle(el);
        }

        makeFlat(el);
       
        if (el.cToggle_onclick != null) {
            el.onclick = el.cToggle_onclick;
            el.cToggle_onclick = null;
        }
    }
}

function toggle(el) {
    el.value = !el.value;
   
    if (el.value)
        el.style.background = "URL(/images/tileback.gif)";
    else
        el.style.backgroundImage = "";

//    doOut(el);   
}


function makeFlat(el) {
    with (el.style) {
        background = "";
        border = "1px solid buttonface";
        padding      = "1px";
    }
}

function makeRaised(el) {
    with (el.style) {
        borderLeft  = "1px solid buttonhighlight";
        borderRight  = "1px solid buttonshadow";
        borderTop    = "1px solid buttonhighlight";
        borderBottom = "1px solid buttonshadow";
        padding      = "1px";
    }
}

function makePressed(el) {
    with (el.style) {
        borderLeft  = "1px solid buttonshadow";
        borderRight  = "1px solid buttonhighlight";
        borderTop    = "1px solid buttonshadow";
        borderBottom = "1px solid buttonhighlight";
        paddingTop    = "2px";
        paddingLeft  = "2px";
        paddingBottom = "0px";
        paddingRight  = "0px";
    }
}

function makeGray(el,b) {
    var filtval;
   
    if (b)
        filtval = "gray()";
    else
        filtval = "";

    var imgs = findChildren(el, "tagName", "IMG");
       
    for (var i=0; i<imgs.length; i++) {
        imgs[i].style.filter = filtval;
    }

}
   

document.write("<style>");
document.write(".coolBar    {background: buttonface;border-top: 1px solid buttonhighlight;    border-left: 1px solid buttonhighlight;    border-bottom: 1px solid buttonshadow; border-right: 1px solid buttonshadow; padding: 2px; font: menu;}");
document.write(".coolButton {border: 1px solid buttonface; padding: 1px; text-align: left; cursor: default;}");
document.write(".coolButton IMG    {filter: gray();}");
document.write("</style>");
Avatar billede mcardle Nybegynder
23. november 2005 - 13:03 #4
Her er min index-fil:


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>
    <head>
        <title>Untitled</title>
        <script src="coolbuttons.js">
   
      /*
      Depressible DHTML buttons (By Erik Arvidsson at http://webfx.eae.net)
      Permission granted to Dynamicdrive.com to include script in archive
      For this and 100's more DHTML scripts, visit http://dynamicdrive.com
      */
   
    </script>
    </head>
<body>

<div class="coolBar" style="width: 100px;">
    <span class="coolButton" style="width:100px" onClick="window.location='http://dynamicdrive.com'">
        <img src="home.jpg">
            <b>Index</b>
    </span>
</div>
<div class="coolBar" style="width: 100px;">
    <span class="coolButton" style="width:100px" onClick="window.location='http://dynamicdrive.com'">
        <img src="standart.jpg">
            <b>Something</b>
    </span>
</div>
<div class="coolBar" style="width: 100px;">
    <span class="coolButton" style="width:100px" onClick="window.location='http://dynamicdrive.com';">
        <img src="mail.jpg">
            <b>Mail Me</b>
    </span>
</div>



</body>
</html>
Avatar billede roenving Novice
23. november 2005 - 13:54 #5
Nej, så skal du lave en window.open i stedet for !-)

onclick="window.open('http://www.ditLink.dk/noget.html','popUp');"
Avatar billede mcardle Nybegynder
23. november 2005 - 13:56 #6
Åbner den så i et nyt vindue, eller ja det gør den, men er det ikke bare en popup så - uden navigationsbar...?
Avatar billede roenving Novice
23. november 2005 - 14:06 #7
Hvis du ikke skriver mere end ovenstående, er det et 'standard' browser-vindue, som browseren på det tidspunkt opfatter det !-)

-- det vil stort set altid være med standard chrome, som du har det i et normalt browser-vindue, men sjældent i samme størrelse !o]
Avatar billede mcardle Nybegynder
23. november 2005 - 17:56 #8
Okay, kan man specificere en størrelse i samme tag...? Evt. med x=0, y=0 og availHeight og availWidth...?
Avatar billede roenving Novice
23. november 2005 - 18:32 #9
Ja, men hvis du også skal tilføje en størrelse og placering (og specielt bruge det i flere/mange events !-), er det nok smartest at flytte det ud i en funktion, f.eks.

<script type="text/javascript">
var popWin = {"closed":true};

function winPop(url,w,h){
  if(!popWin.closed)
    popWin.close();
  var l = (screen.availWidth-w)/2;
  var t = (screen.availHeight-h)/2;
  popWin = window.open(url,"popupWin","width=" + w + ",height=" + h + ",top=" + t + ",left=" + l);
}
</script>

-- og så kaldes der således:

onclick="winPop('http://www.eksperten.dk',400,300);"
Avatar billede mcardle Nybegynder
23. november 2005 - 18:40 #10
Og så lige en sidste ting. Kan man ikke sætte den til at finde availWidth og availHeight og åbne siden i den størrelse?
Avatar billede mcardle Nybegynder
23. november 2005 - 18:43 #11
Og så SKAL det være et standartvindue siden bliver åbnet i.
Avatar billede mcardle Nybegynder
23. november 2005 - 18:50 #12
Skal jeg så ikke bare lave 2 variabler?

var h = (screen.availHeight);
var w = (screen.availWidth);

Og slette dem oppe i funktionen.

Og slette /2 i var l og t
Avatar billede roenving Novice
23. november 2005 - 18:52 #13
Jo, f.eks.

<script type="text/javascript">
var popWin = {"closed":true};

function winPop(url){
  if(!popWin.closed)
    popWin.close();
  popWin = window.open(url,"popupWin","width=" + screen.availWidth + ",height=" + screen.availHeight + ",top=0,left=0,toolbar,location,directories,status,menubar,scrollbars,resizable,copyhistory");
}
</script>

-- og så kaldes der således:

onclick="winPop('http://www.eksperten.dk');"
Avatar billede mcardle Nybegynder
23. november 2005 - 18:54 #14
Du er officielt min bedste ven... Tusind tak.

Sender du lige et svar.

//mcardle
Avatar billede roenving Novice
23. november 2005 - 19:01 #15
Velbekomme '-)
Avatar billede mcardle Nybegynder
23. november 2005 - 19:02 #16
Der er faktisk lige en ting mere. Hvis jeg har en iframe som jeg skal target mit link til, kan jeg så bare bruge:

onclick="window.open('http://www.ditLink.dk/noget.html','iframe');"
Avatar billede mcardle Nybegynder
23. november 2005 - 19:04 #17
Altså navnet på min iframe
Avatar billede mcardle Nybegynder
23. november 2005 - 19:07 #18
Det kunne man...
Avatar billede roenving Novice
23. november 2005 - 19:07 #19
Ja !-)

-- men så skal du fjerne det der check for, om der er åbent i forvejen ...

-- og tak for point ;~}
Avatar billede mcardle Nybegynder
23. november 2005 - 19:08 #20
Det her:

<script type="text/javascript">
var popWin = {"closed":true};
Avatar billede roenving Novice
23. november 2005 - 19:11 #21
Specielt:

  if(!popWin.closed)
    popWin.close();
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