Avatar billede jesper-moeller Nybegynder
24. juni 2006 - 12:06 Der er 20 kommentarer og
1 løsning

Vil dette virke i alle browsere

Jeg har forsøgt mig med at lave et lille script der viser URL'en på en side

Mit spørgsmål er nu om det vil virker efter hensigt crossbrowser ??
Og er min code hensigtmæssig ?? eller kan det gøres bedre ??

    <head>
        <meta http-equiv="content-type" content="text/html;charset=ISO-8859-1">
        <script type="text/javascript"><!--
GetBrowser();
type = "IE";
function GetBrowser() {
    if (navigator.userAgent.indexOf("Opera")!=-1 && document.getElementById) type="OP";
    else if (document.all) type="IE";
    else if (document.layers) type="NN";
    else if (!document.all && document.getElementById) type="MO";
    else type = "IE";
}

function ShowURL() {
locref = window.location.href;
    if (type=="IE") {
        document.all["her"].innerHTML = locref;
    }
    if (type=="NN") {
        document.layers["her"].document.open();
        document.layers["her"].document.write(locref);
        document.layers["her"].document.close();
    }
    if (type=="MO" || type=="OP") {
        document.getElementById("her").innerHTML = locref;
    }
}
// -->
</script>
    </head>

    <body onload="ShowURL()">
        <center>
        <p>Siden er Her: <div id="her">URL</div></p>
        </center>
    </body>
Avatar billede Slettet bruger
24. juni 2006 - 12:17 #1
En løsning som fungerer med DOM scripting kunne være

<html>
<head>
<title>Test</title>
<script type="text/javascript">
function writeLocation(locationId) {
    var locationElement = document.getElementById(locationId);
   
    var textNode = document.createTextNode(window.location.href);
   
    locationElement.appendChild(textNode);
}
</script>
</head>
<body>
<form>
<input id="activate" type="button" value="Test" onclick="writeLocation('location');">
<div id="location"></div>
</form>
<body>
</html>
Avatar billede jesper-moeller Nybegynder
24. juni 2006 - 12:20 #2
Og det vil virke i alle browsere ???
Avatar billede jesper-moeller Nybegynder
24. juni 2006 - 12:20 #3
Hov ... ser lige det ligger i en form ... det kan jeg ikke bruge... sorry
Avatar billede Slettet bruger
24. juni 2006 - 12:26 #4
Form tag er ligegyldig det er bare til at holde knappen det er ligegyldigt for funktionaliteten.

Det vil virke i alle browserer der har bare en banal understøttelse from DOM scripting så i praksis ja det vil fungere.
Avatar billede jesper-moeller Nybegynder
24. juni 2006 - 12:42 #5
Ok... må jeg jo afprøve ...
undre mig dog lidt over at document.getElementById skulle virke i alle browsere
Nå nu der er script som GetBrowser() der netop undersøger og sætte forskellige metoder for dette ?
Avatar billede Slettet bruger
24. juni 2006 - 12:49 #6
Er det virkelig nødvendigt for dig at understøtte NS4 ? altså virkeligt for hvem er det lige der kommer med sådan en?

Du får uden at blinke support i IE, Opera, Netscape, Mozilla, Safari og Firefox
Avatar billede jesper-moeller Nybegynder
24. juni 2006 - 13:00 #7
*S*... naa... netscape 4 er vist ikke nødvendigt ...*G*

men hvad med else if (document.all) type="IE"; ???
Avatar billede Slettet bruger
24. juni 2006 - 13:24 #8
document.all er en IE specialitet og den skal du bare glemme alt om at du nogen sinde har ser ;) I princippet fungerer document.all ved at stille alle elementer med ID tilrådighed som properties.

Document.all skal erstattes med document.getElementById('id');
Avatar billede jesper-moeller Nybegynder
24. juni 2006 - 13:51 #9
Oki... takker for hjælpen ... smid et svar
Avatar billede Slettet bruger
24. juni 2006 - 14:00 #10
;)
Avatar billede jesper-moeller Nybegynder
24. juni 2006 - 14:35 #11
Hovsa ... der er en fejl i det ...
den omskriver jo ikke <div id="her">URL</div> men lægger til i den ??
Avatar billede mclemens Nybegynder
24. juni 2006 - 14:46 #12
Kan laves på mange måder... her er lidt spam Jesper:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="content-type" content="text/html; charset=iso-8859-1"><title>Ingen titel</title>

<script type="text/javascript">
window.onload=function(){
document.getElementById("location").childNodes[0].nodeValue=window.location.href;
}
</script>

</head><body>

<div id="location">URL</div>

</body></html>
Avatar billede mclemens Nybegynder
24. juni 2006 - 14:48 #13
Eller med kryptos's og remove af childNodes:


<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="content-type" content="text/html; charset=iso-8859-1"><title>Ingen titel</title>

<script type="text/javascript">
function writeLocation(locationId) {
    var locationElement = document.getElementById("location");
while(locationElement.childNodes.length>0)locationElement.removeChild(locationElement.childNodes[0]);
 
    var textNode = document.createTextNode(window.location.href);
 
    locationElement.appendChild(textNode);
}
</script>
</head>
<body>
<form>
<input id="activate" type="button" value="Test" onclick="writeLocation('location');">
<div id="location">test<br>test2</div>
</form>

</body></html>
Avatar billede mclemens Nybegynder
24. juni 2006 - 14:48 #14
// Spam over'n'out
Avatar billede jesper-moeller Nybegynder
24. juni 2006 - 15:41 #15
Hmm ...

Detsvære virker det heller ikk :-(
Avatar billede jesper-moeller Nybegynder
24. juni 2006 - 15:43 #16
Meningen er at diven skal blive til et link

Ala:

var locationElement = document.getElementById("her");
var linkTekst = "Link Tekst";
var urlNode = document.createTextNode("<a href=\""+window.location.href + "?detect=false\">"+linkTekst+"<\/a>");
    locationElement.appendChild(urlNode);
Avatar billede mclemens Nybegynder
24. juni 2006 - 16:06 #17
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="content-type" content="text/html; charset=iso-8859-1"><title>Ingen titel</title>

<script type="text/javascript">
window.onload=function(){

var locationElement=document.getElementById("her");

    var texta=document.createElement("a");
    var textNode=document.createTextNode("Link tekst");
    texta.appendChild(textNode);
    texta.href=window.location.href+"?detect=false";
 
    locationElement.appendChild(texta);
}
</script>
</head>
<body>
<div id="her"></div>
<body>
</html>
Avatar billede mclemens Nybegynder
24. juni 2006 - 16:11 #18
Hvis div med id her indeholder elementer der skal
fjernes skal denne while måske også bruges:

...
var locationElement=document.getElementById("her");
while(locationElement.childNodes.length>0)locationElement.removeChild(locationElement.childNodes[0]);
var texta=document.createElement("a");
...
Avatar billede jesper-moeller Nybegynder
24. juni 2006 - 16:26 #19
Takker *S* ....  det prøver jeg ... *S*
Avatar billede jesper-moeller Nybegynder
24. juni 2006 - 16:33 #20
Perfekt :-)

Og godt at fjerne indholdet ... ellers kommer der 2 link hved refresh :-)
Avatar billede mclemens Nybegynder
24. juni 2006 - 16:39 #21
Super :)

[ Og godt at fjerne indholdet ... ellers kommer der 2 link hved refresh :-) ]
- Jeps, det er ikke alle browsere, der nulstiller elementer ved refresh :o)
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