Toon posts:

[JS] Base url?

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb het volgende probleem.

Ik heb 2 linkjes.

<a href="test/testcase">test</a> en <a href="javascript:popup('test/testcase', 200, 400);">Test met popup</a>

nu heb ik met de base url de standaard locatie ingesteld dus stel dit script heet index/view en wil verwijzen naar test/testcase dan krijg ik bij de 1e wel test/testcase maar bij de 2e link krijg ik index/view/test/testcase.

in mijn html bron heb ik de base_url ingesteld en daarom gaat die link goed maar waarom gaat de link in javascript fout? iemand een idee hoe ik dit kan oplossen?

  • Annie
  • Registratie: Juni 1999
  • Laatst online: 25-11-2021

Annie

amateur megalomaan

misschien werkt dit wel:
code:
1
<a href="test/testcase" onclick="popup(this.href, 200, 400);return false;">Test met popup</a>

Today's subliminal thought is:


  • Soultaker
  • Registratie: September 2000
  • Laatst online: 23:14
De oplossing van Annie is al nuttig omdat je dan de doellocatie niet hoeft te dupliceren (wat maar fouten voorkomt, want in de praktijk zal je niet snel merken als je href-url niet overeenkomt met de url die je aan popup() meegeeft, aangezien je zelf vaak met JavaScript enabled zal teste).

Je kunt ook een stapje verder gaan en voor eens en altijd je content scheiden van de JavaScript code. Je geeft dan je linkjes die een popup moeten hebben een naam (bv. "name=popup") en maakt er dan een apart JavaScriptje bij, dat je include op die pagina:
code:
1
2
3
4
5
6
7
8
var anchors = document.getElementsByName('popup');
for(var n = 0; n < anchors.length; ++n)
{
    anchors[n].onclick = function() {
        window.open(this.href, '', 'width=200,height=400');
        return false;
    }
}


Maar goed, dat gaat je misschien net wat te ver. ;)

[ Voor 5% gewijzigd door Soultaker op 02-05-2004 00:04 ]


Verwijderd

Topicstarter
dat werkt inderdaad; netjes!!! ik begrijp dus dat onClick voor de href aangeroepen wordt?

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 23:14
Ja. Het resultaat van de onclick-handler bepaalt of de default-actie (het volgen van de href-link) alsnog wordt uitgevoerd. Zorg er dus voor dat je onclick-handler false returned (dat was ik in mijn voorbeeldcode even vergeten :o), dan wordt de default-handler alleen uitgevoerd als de browser geen JavaScript ondersteunt.

Dat werkt ook zo bij allerlei andere handlers die default-acties kunnen vervangen, zoals onsubmit bij forms enzo.

Verwijderd

Topicstarter
Helaas werkt dit niet bij buttons, heeft iemand mischien een idee hoe ik dit probleem kan oplossen?

  • teacher
  • Registratie: September 2001
  • Laatst online: 23:19

teacher

Frontpage Admin / Global Moderator

Dysgaf!

tuurlijk werkt dit wel bij buttons..

Die kan je toch ook een onclick eventhandler meegeven?

Wise enough to play the fool


Verwijderd

Topicstarter
jawel maar dan komt ie weer verkeerd uit, ik gebruik multiviews hé en dat maakt het er niet gemakkelijker op...

  • Annie
  • Registratie: Juni 1999
  • Laatst online: 25-11-2021

Annie

amateur megalomaan

Je zou kunnen proberen om in je js-code bij buttonclicks de base href te bepalen.

Zoiets (ongetest)
code:
1
2
3
4
5
6
var baseHref;
try {
  baseHref = document.getElementsByTagName("BASE")[0].getAttribute("href");
} catch(er) {
  baseHref = '';
}

[ Voor 11% gewijzigd door Annie op 03-05-2004 13:58 ]

Today's subliminal thought is:


Verwijderd

Topicstarter
hmm... ik snap niet geheel waar je op doelt Annie? zou je mischien iets meer duidelijkheid willen scheppen? :D dank U!

  • Annie
  • Registratie: Juni 1999
  • Laatst online: 25-11-2021

Annie

amateur megalomaan

Je roept bij de onclick van je button toch een javascript functie aan waar je een url aan meegeeft? Dan kan je in die functie zelf de baseHref voor de meegegeven url plakken. Tenminste, tot zover de theorie, heb het niet getest ;) :D

Today's subliminal thought is:

Pagina: 1