Toon posts:

[JS] - CreateLink met target="_blank" ??? help !!

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb een .asp WYSIWYG edditor om online een html, asp of .inc pagina aan te kunnen passen.

In deze editor zit ook een optie om geselecteerde tekst tot link te maken. Gewoon, simpel, selecteer een woord, druk op het "hyperlink" knopje, vul het protocol (http, mailto, etc.) en het adres in en hopla...
daar is dan een link.

Deze functie is gebouwd uit het createlink element (javacript).
De functie ziet er in het script als volgt uit:
JavaScript:
1
2
3
function createLink() {
cmdExec("CreateLink");
}

In de html code (dus de functie onder het knopje) ziet er als volgt uit:
HTML:
1
2
3
4
5
<td height="20" onmouseover="over(this);" onmouseout="out(this);"> 
   <div onclick="cmdExec('createLink')">
      [img]"img/link.gif"[/img]
   </div>
</td>

Probleem is nu dus echter dat de links in het huidige venster worden geopend, en niet in een nieuwe.....

Vraag is nu: hoe krijg ik het voor elkaar dat ik heb de optie target mee kan geven ???

Heb hiervoor al bij MSDN gekeken, maar zonder al te veel resultaat: er staan alleen specs die ik (betreft dit element) niet wil weten ....

So pls help me with this cause it's driving me insane !!!! :? 8)7

  • Morrar
  • Registratie: Juni 2002
  • Laatst online: 22-08 08:30
Das dus vrij lastig... Dit is echt weer zoiets M$ achtigs: execCommand is leuk maar iets basaals als een link-target bouwen de sukkels er niet in...

Heb het zelf ooit gedaan met een eigen popup dialoogje waarin URL en target en eventueel text ingevoerd konden worden. De link maakte ik vervolgens door de HTML te genereren en erin te pasten...

De code hiervoor is als volgt (code checkt ook of er een image of text is geselecteerd) :

//EditLayer = <ref naar editable Layer hier>;
//theForm = <ref naar formuliertje met invoervelden voor text/target/url

SelType = EditLayer.document.selection.type.toLowerCase();
LinkHTML = "<a href='" + theForm.LinkURL.value + "'";

if(theForm.LinkTarget.value)
LinkHTML += " target='" + theForm.LinkTarget.value + "'";

if(SelType == "text")
{

if(theForm.LinkText.value)
LinkHTML += ">" + theForm.LinkText.value + "</a>";
else if(this.DialogueTR.htmlText)
LinkHTML += ">" + this.DialogueTR.htmlText + "</a>";
else
LinkHTML += ">" + theForm.LinkURL.value + "</a>";

this.DialogueTR.pasteHTML(LinkHTML);

}
else if(SelType == "control")
{
var InnerElem = this.DialogueTR.item(0);
InnerElem.outerHTML = LinkHTML + ">" + InnerElem.outerHTML + "</a>";
}

Zoiets dus, hoop dat je er mee uit de voeten kunt. Netjes is het niet helemaal want het verkloot naar ik meen de undo-functionaliteit... Er waren echter geen andere mogelijkheden geloof ik aangezien je de target niet via het DOM kan zetten, maar dat zou je nog ff na kunnen kijken.