Toon posts:

[js]Code stopt op else clause?

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik ben bezig met het ontwikkelen van een QuickQuote systeem voor een niet nader te noemen forum. Deze functie zal worden gebruikt in een extensie.

Ik heb het zover dat het bericht wordt teruggeparsed naar SML, en die wordt in de variabele msg gestopt. Daarna check ik of er een textarea element bestaat, en voeg ik daar de msg toe. Als er geen textarea element is (oftewel het topic is gesloten), dan moet de tekst naar het klembord worden gekopiëerd.

Nu werkt het prima als er een textarea element is, maar zonder loopt de code ergens vast, maar ik kan dus niet zien waar, want uit extensies krijg je geen javascript-fouten. Als ik het vanuit een test-pagina doe, krijg ik een beveiligingsfout, maar de eerste alert in de else clause wordt wél uitgevoerd. Hier is de code:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
// hier hoeven we alleen de msg nog maar in te voegen in de textarea.
var textarea=doc.getElementsByTagName('textarea').item(0);
if (textarea)
{
    alert('Probeer in te voegen');
    textarea.value+=msg;
}
else // topic gesloten of zo, kopiëren naar het clipboard
{
    alert('Probeer te kopiëren naar klembord');
    gClipboardHelper.copyString(msg);
    alert('De quote is naar het klembord gekopiëerd.');
}


De eerste clausule werkt dus zoals verwacht, inclusief alert. De tweede wordt niet uitgevoerd, ik krijg niet eens de alert, en die code zou toch écht moeten werken.

Iemand enig idee hoe ik dit moet oplossen?

PS: doc is een verwijzing naar het betreffende document, dat is dus géén fout.

  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

Waarom doe je niet:

JavaScript:
1
if (typeof textarea != 'undefined')


Want niet alle browser geven netjes true of false terug voor wel / niet bestaande elementen (dacht ik :P)

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.


Verwijderd

Topicstarter
BtM909 schreef op vrijdag 20 mei 2005 @ 12:26:
Waarom doe je niet:

JavaScript:
1
if (typeof textarea != 'undefined')


Want niet alle browser geven netjes true of false terug voor wel / niet bestaande elementen (dacht ik :P)
Omdat het een Firefox extensie betreft (zie OP), de code wordt dus alleen in Firefox uitgevoerd, en zoals we allemaal weten is Fx een fantastische browser die dit prima doet.

Daar zit het probleem ook niet in. Als het daar fout zou gaan, zou je toch een alert('Probeer in te voegen'); verwachten, die heb ik daar ook niet voor niks neergezet ;)

  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

Verwijderd schreef op vrijdag 20 mei 2005 @ 12:28:
[...]

Omdat het een Firefox extensie betreft (zie OP), de code wordt dus alleen in Firefox uitgevoerd, en zoals we allemaal weten is Fx een fantastische browser die dit prima doet.

Daar zit het probleem ook niet in. Als het daar fout zou gaan, zou je toch een alert('Probeer in te voegen'); verwachten, die heb ik daar ook niet voor niks neergezet ;)
Ehm snap je wel wat m'n code doet? :) Ik check of het object al dan niet bestaat. Heb je het op mijn manier geprobeerd?

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.


Verwijderd

Topicstarter
Yup, ik heb je code geprobeerd, maar zoals verwacht geen enkel resultaat.

Ik heb namelijk in beide clauses een alert in het begin staan. Of mijn if-statement nou wel of niet het goede resultaat geeft, er MOET altijd één van de twee worden uitgevoerd. En dat gebeurt dus niet.

Als er géén textarea is, dan wordt er niets uitgevoerd, geen alert, de code crashed, en de functie stopt. Dat is dus ongeacht hoe je kijkt of de textarea bestaat. Mijn code is daarin net zo geldig als die van jou.

Maar iig bedankt voor je inbreng, maar helaas, het werkt dus niet.

Verwijderd

Heb je een voorbeeld online? Want syntactisch lijkt het niet incorrect. getElementsByTagName('textarea')[0] werkt ook niet?

Verwijderd

Topicstarter
http://martijntje.xs4all....okblock-1.3.4-preview.xpi

Ik heb trouwens die alert(); dingen er eventjes uitgehaald.

Verwijderd

Topicstarter
Het probleem is opgelost.

Het kwam door een fout in een van de andere functies, die niet door mij zijn geschreven.
Pagina: 1