Avatar billede tblaster Nybegynder
01. juli 2003 - 13:47 Der er 14 kommentarer og
1 løsning

Link skal tilføjes med target="_new"

Jeg har en dhtml editor hvor jeg åbner et nyt vindu når et link skal indsættes:

function DECMD_HYPERLINK_onclick() {
  var arr = showModalDialog( "Inc/insertlink.htm",
                            "",
                            "font-family:Verdana; font-size:12; dialogWidth:30em; dialogHeight:32em" );

  if (arr != null) {
    tbContentElement.ExecCommand(DECMD_HYPERLINK,OLECMDEXECOPT_DONTPROMPTUSER, arr["LinkUrl"]);
  }
  tbContentElement.focus();
}

Min insertlink.htm ser således ud:

<SCRIPT LANGUAGE=JavaScript FOR=Ok EVENT=onclick>
<!--
  var arr = new Array();
  arr["LinkUrl"] =  document.frmLinkPick.LinkUrl.value;
  window.returnValue = arr;
  window.close();
// -->
</SCRIPT>
</HEAD>
<BODY>
<br>
<FORM NAME="frmLinkPick" method="post" action="">
<INPUT TYPE=HIDDEN NAME=LinkLabel value="">
<TR>
<TD VALIGN="middle" align="left" nowrap>
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" id="AutoNumber1">
  <tr>
    <td width="4%">
    <p style="line-height: 200%">Type:</td>
    <td width="96%">
<p style="line-height: 200%">
<SELECT NAME=LinkType onChange="document.forms[0].elements['LinkUrl'].value=document.forms[0].elements['LinkType'][document.forms[0].elements['LinkType'].selectedIndex].value;document.forms[0].elements['LinkUrl'].focus();">
<option value="http://www." selected>Http://</option>
<option value="mailto:">Email</option>
</SELECT></td>
  </tr>
  <tr>
    <td width="4%">&nbsp;</td>
    <td width="96%">&nbsp;</td>
  </tr>
  <tr>
    <td width="4%">
    <p style="line-height: 200%">URL:</td>
    <td width="96%">
    <p style="line-height: 200%"><INPUT SIZE=40 NAME=LinkUrl style="width : 270px;" value="Http://www."></td>
  </tr>
  <tr>
    <td width="4%">&nbsp;</td>
    <td width="96%">
&nbsp;</TD>
</TR>
  <tr>
    <td width="4%">
    <p style="line-height: 200%">&nbsp;</td>
    <td width="96%">
<p style="line-height: 200%">
<BUTTON ID=Ok>  OK  </BUTTON>
&nbsp;&nbsp;<BUTTON ONCLICK="window.close();">Cancel</BUTTON>

</TD>
</TR>
</TABLE>
    </td>
  </tr>
</table>
</FORM>

Hvordan får jeg tilføjet så alle links der bliver tilføjet i min dhtml editor bliver tilføjet med target="new"?
Avatar billede =maddog= Nybegynder
01. juli 2003 - 14:05 #1
hej tblaster, du må kun have et spørgsmål åbent af gangen på E. Beklager men sådan er reglerne. Er du sød lige at lukke et af dem?..
Jeg skal ikke foregive at kunne se hvad der egentlig sker i den kode du har frembragt. Personligt synes jeg at de wysiwyg funktioner der er i IE er noget hø. Besværlige at kode og de laver bilka html, der ikke rigtig holder i byretten.
Hvis du har en DOM-reference til linket kan du sætte target med
_link.setAttribute("target","_new");
hvor _link er en reference til objektet.
Avatar billede tblaster Nybegynder
01. juli 2003 - 14:11 #2
maddog ... jeg kender godt reglerne her på eksperten og kan ikke se hvor du mener at jeg bryder dem! Jeg har ingen spørgsmål åben der angår det samme problem ... jeg har et par spørgsmål åbne med hensyn til min dhtml editor men det handler om forskellige problemer ...

Jeg har ingen DOM-reference ... er det besværligt at oprette en sådan en?
Avatar billede =maddog= Nybegynder
01. juli 2003 - 14:24 #3
nææh. egentlig ikke. typisk får man fat i en reference gennem en id attribut'
_link = document.getElementById("a_href001");
eller når et element oprettes
_link = document.createElement("a");
den kan også hentes på gammeldags facon gennem document.links[]
_link = document.links[0];
selvom det ikke er "up-to-date". Det er bedre med
_link = document.getElementsByTagName("a").item(0);

Du kan se hvad jeg mener her:
<html><head>
<script>
    function test() {
        _link = document.getElementsByTagName("a").item(0);
        _link.setAttribute("target","_new");
        alert(document.getElementById("div").innerHTML);
        return false;
    }
</script>
</head><body>
<div id="div">
<a href="#" onclick="return test();">i</a>
</div>
</body></html>
Avatar billede tblaster Nybegynder
01. juli 2003 - 14:30 #4
Jeg kan ikke se hvordan jeg kan kæde det ind i min DHTML Editor så alle links bliver åbnet med en target="_new"
Avatar billede =maddog= Nybegynder
01. juli 2003 - 14:43 #5
jeg synes du giver op for let.
tillad mig et gæt. du har en selection. du laver en selectionRange. du kalder execCommand? Er det rigtig?
du kan få DOM-referencen til det overliggende tag (det første tag der spænder over hele din selection) med parentElement();.
Som eksempel oprettes her et link med target="_NEW" per default:
<html><head>
<script>
function doLink() {
    var sText = document.selection.createRange();
    if  (sText.text!="") return;
    document.execCommand("CreateLink");
    if  (sText.parentElement().tagName == "A") {
        sText.parentElement().setAttribute("target","_NEW");
      }
}
</script>
</head><body>
DeeDaa DeeDaa DeeDaa DeeDaa DeeDaa DeeDaa DeeDaa
<a href="#" onclick="doLink();alert(document.body.innerHTML);">link</a>
</body></html>
Avatar billede =maddog= Nybegynder
01. juli 2003 - 14:45 #6
<html><head>
<script>
function doLink() {
    var sText = document.selection.createRange();
    if  (sText.text=="") return;
    document.execCommand("CreateLink");
    if  (sText.parentElement().tagName == "A") {
        sText.parentElement().setAttribute("target","_NEW");
      }
}
</script>
</head><body>
DeeDaa DeeDaa DeeDaa DeeDaa DeeDaa DeeDaa DeeDaa
<a href="#" onclick="doLink();alert(document.body.innerHTML);">link</a>
</body></html>

mindre fehler. håber du også spottede den
Avatar billede tblaster Nybegynder
01. juli 2003 - 14:47 #7
Nope jeg har ikke en selectionRange men jeg kalder execCommand ...
Avatar billede =maddog= Nybegynder
01. juli 2003 - 14:50 #8
okey, du levner mig ikke mange chancer for at hjælpe. you're on your own pal. du kunne forsøgsvis oprette en selection og bruge koden ovenfor.. hvis du gider.
(altså stumpen
var sText = document.selection.createRange();
if  (sText.parentElement().tagName == "A") {
    sText.parentElement().setAttribute("target","_NEW");
}
)
ellers kan jeg ikke rigtig se hvordan du kan gøre det.
Avatar billede tblaster Nybegynder
01. juli 2003 - 14:53 #9
jeg vil prøve mig lidt frem og se om jeg kan komme op med noget ...
Avatar billede =maddog= Nybegynder
01. juli 2003 - 14:58 #10
god ide. sorry hvis jeg var lidt skarp i tonen, men jeg kender det bare alt for godt. man har rodet med noget i en rum tid, og erkender til sidst at man skal have bruge for hjælp. på det tidspunkt er man så træt af det, at man ikke gider mere trail-and-error og derfor insisterer man på at få tingene skåret ud i pap. desværre er din kode jo en anelse kompliceret og jeg har derfor ikke nogen jordisk chance for at få et komplet overblik. derfor er jeg nød til at komme med bud i eksempelform og det skaber jo lidt problemer (jævnfør ovenstående) trods god vilje fra begge kanter.
Avatar billede tblaster Nybegynder
01. juli 2003 - 15:01 #11
jeg forstår dig godt ... mange gange skal man bare lige tage en pause og så når man kommer tilbage til koderne så er det hele meget nemre at forstå!
Avatar billede tblaster Nybegynder
08. juli 2003 - 09:06 #12
Lukker
Avatar billede =maddog= Nybegynder
08. juli 2003 - 10:07 #13
undskyld jeg trænger mig på, men jeg synes personligt at jeg burde have haft en mindre erkendelighed på 10-20 point i det jeg ikke blot kom med en working solution (du kunne have valgt at implementere), men også almindelig opbakning.
nuvel. no hard feelings.
Avatar billede tblaster Nybegynder
08. juli 2003 - 10:15 #14
tja det har du jo egentlig ret i ... det glemte jeg sku' da lige ... sorry ... du hjalp jo en del!

http://www.eksperten.dk/spm/373882
Avatar billede =maddog= Nybegynder
08. juli 2003 - 10:36 #15
det er jo til dels min egen skyld, fordi jeg normalt insisterer på først at ligge et svar når spørgeren er tilfreds.
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