Op deze website gebruiken we cookies om content en advertenties te personaliseren, om functies voor social media te bieden en om ons websiteverkeer te analyseren. Ook delen we informatie over uw gebruik van onze site met onze partners voor social media, adverteren en analyse. Deze partners kunnen deze gegevens combineren met andere informatie die u aan ze heeft verstrekt of die ze hebben verzameld op basis van uw gebruik van hun services. Meer informatie.

Akkoord

Vraag & Antwoord

Webprogrammeren & scripting

[js] Zelf een hyperlink mbv een WYSIWYG aanmaken

Jurriaan R
5 antwoorden
  • Ik ben op zoek naar een stukje js of documentatie waarmee ik de functie execcommand(CreateLink ) kan vervangen door een zelf geschreven progje (dit is nodig om de links eenvoudig beheerbaar te maken door links van het CMS direct op te nemen).

    Het enigste wat ik kan vinden is:
    http://msdn.microsoft.com/library/default.asp?url=/workshop/author/dhtml
    eference/methods/execcommand.asp

    Dus ik wil op de plek van de cursor een pop-upje hebben waar ik zelf eea in kan zetten, waarna het correct wordt opgenomen, alsware het door bovenstaande functie gedaan.

    Heeft iemand dit probleem al eens opgelost of heb je een aanwijzing????
  • in grote stappen:


    geselecteerde tekst uitlezen met js:

    [code:1:d59554da25]
    r = document.selection.createRange();
    url_text = r.text;
    [/code:1:d59554da25]

    vervolgens een modaldialog openen, die gekoppeld is aan de pagina

    [code:1:d59554da25]
    var args = {opener: window,str: 'Editor'};
    var new_url = window.showModalDialog(url, args);
    r.pasteHTML(new_url);
    [/code:1:d59554da25]

    de url die je opgeeft is een compleet nieuwe html pagina. Van daaruit kun je de opener aanspreken middels het window.external.opener object.
    Je moet eerst de tekst ophalen en die bijvoorbeeld in een tekstvak zetten, bijvoorbeeld (in de geopende pagina):

    document.myform.tekstvak.value = window.external.opener.url_text;

    vervolgens kun je een formulier maken, op de manier zoals jij wilt. Bij het afsluiten van de showModalDialog() wordt er automatisch een waarde geretouneert, maar die waarde moet je wel eerst opgeven; window.external.returnValue. Dus bijvoorbeeld een knop, die deze code aanroept:

    [code:1:d59554da25]

    window.external.returnValue = document.myform.url.value;
    window.close();

    [/code:1:d59554da25]


    het mooie van showModalDialog is dat het net als het huidige url venster is gekoppeld aan je pagina. Het script gaat dus pas verder als je de dialog hebt afgesloten. Ook kan je niet browser afsluiten als de sialog nog zichtbaar is.
  • Dit werkt niet correct, zover was ik zelf ook al gekomen.
    Hij laat alleen het geselekteerde deel zien.
    Als je mbv mijn command ergens in een correcte link gaat staan (zonder te markeren) en je ropet de functie aan, dan markeert hij zelf de totale link en opent hij een venster met daarin de url. De link en de url hoeven niet hetzelfde te zijn.
    Mijn streven is een js te schrijven die op elke wikkekeurige plaats in een textarea is aan te roepen (eventueel naar voren scant op een<A>-tag en naar achteren op een </A> en alle wat hiermee te maken heeft aanbied om te bewerken.
  • dit werkt wel correct het doet alleen niet wat jij wil…
    jij wil een al bestaande link aanpassen, niet een nieuwe link toevoegen.

    dat ligt wat lastiger, want bij mij weten is niet mogelijk om te kijken binnen welk element de cursor staat.

    Wat echter wel mogelijk is, is kijken op welk element er een event is losgelaten. Als je nu tactisch wat eventhandlers plaatst, zoals onclick dan kun je het srcElement uitlezen en ergens als variabele opslaan. Met srcElement.outerHTML krijg je, in het geval van een hyperlink, de hele tag.
  • Ik heb diverse methoden bekeken en ook de doc's doorgenomen. Tot op heden nog geen sluitende oplossing gevonden, dus ik ga het zelf maar proggen.
    Het volgende probeersel heb ik samengesteld:

    [code:1:c6ab2a9532]function createLink() {
    var objF=document.frames[fID];
    if(objF) {
    var oud=document.frames[fID].document.body.innerHTML;
    var TempTR = objF.document.selection.createRange();
    TempTR.pasteHTML("&#01;");

    // hier moet nog wat komen

    }[/code:1:c6ab2a9532]
    - In oud sla ik de gehele handel op.
    - met de volgende 2 regels markeer ik de juiste positie
    ? vervolgen moet ik nog naar voren en achteren scannen voor een tag
    ? indien tag aanwezig dan elementen overnemen anders leeg
    ? elementen bewerken
    ? nieuwe tag samenstellen en plaaten in oud
    ? handel weer terug zetten

    [b:c6ab2a9532]Nu het probleem [/b:c6ab2a9532]hoe kom ik weer op de juiste cursorpos. Als ik de handel terug zet, gaat de cursor aan het einde van de hele tekst staan.

Beantwoord deze vraag

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.