Avatar billede henan Nybegynder
15. januar 2006 - 19:19 Der er 11 kommentarer

pasteHTML: html indsættes udenfor det tilladte område

Jeg har et problem med pasteHTML, der indsætter html udenfor det tilladte område (en div i dette tilfælde). Derudover er det et problem, hvis man ikke har placeret cursoren i div'en. Så kommer der en fejlmelding om at "fokus er ikke sat".

I en fil har jeg følgende:

<html>
<head>

<script language="javascript">

function insertTable(){
    if (fokus){
        window.open("c_table.php","","toolbar=no,scrollbars=yes,width=300,height=300");
    } else {
        alert('Du skal markere et sted i teksten, hvor du vil indsætte den nye tabel.');
    }
}


</script>


</head>
<body>
<span style="cursor:hand;" onmousedown="insertTable();">Indsæt tabel</span>
<br /><br />

<div style="width:200; height:150; border:1px solid black" id="content" onfocus="fokus = true;" onblur="fokus = false;" contentEditable>Dette er en test</div>

</body>

Og i en anden har jeg:

<html>
<head>

<script language="javascript">
   
    function getTable()
    {
   
        var rows = document.create.rows.value;
        var cols = document.create.cols.value;

        var start = 0;
        var html = '';

        while (rows > start)
        {
        var cells = cols;

            str = '';

            while (cells > 0)
            {
                str += "<td></td>";
                cells--;
            }
       

        html += "<tr>" + str + "</tr>";
        start++;
        }
        html = "<table border=\"1\">" + html + "</table>";
       
        r = window.opener.document.selection.createRange();
        r.pasteHTML(html);

        self.close();

    }
   
</script>


</head>
<body>

<form name="create" method="post" action="c_table.php">
Antal rows: <input type="text" name="rows" /><br />
Antal cols: <input type="text" name="cols" /><br />
<input onClick="getTable();" type="button" name="submit" value="Lav tabel" /><br />
</form>

</body>
</html>

Scriptet indsætter en tabel. Men nogle gange går det galt, og tabellen indsættes i toppen af siden. Hvad kan jeg gøre?
Avatar billede cpufan Juniormester
15. januar 2006 - 21:00 #1
du kan lave denne

<body>

om til

<body onload="initfokus()">

og så i din <head>
<script language="javascript">

function initfokus()
{
fokus = false;
}
</script>
Avatar billede henan Nybegynder
15. januar 2006 - 21:20 #2
tak cpufan
Det løste problemet med fejlmeldingen. Men jeg får stadig sat en tabel ind uden for div'en med mindre jeg har markeret noget i feltet.
Avatar billede roenving Novice
16. januar 2006 - 05:23 #3
Check om der findes noget i en createRange før du starter funktionen !-)
Avatar billede cpufan Juniormester
16. januar 2006 - 10:02 #4
f.eks sådan:

r = window.opener.document.selection.createRange();
r.pasteHTML(html);

laves om til

if html.length > 40{
r = window.opener.document.selection.createRange();
r.pasteHTML(html);
}
Avatar billede cpufan Juniormester
16. januar 2006 - 10:04 #5
nej den holder ikke alligevel,
den vil jo lukke med det samme, uden indhold.
Avatar billede cpufan Juniormester
16. januar 2006 - 10:05 #6
eller hur? - prøv det evt. lige.
Avatar billede henan Nybegynder
16. januar 2006 - 10:54 #7
Jeg tror jeg har fundet løsningen! I det ene script har jeg smidt window.opener.content.focus(); ind inden jeg paster html'en. Og det ser ud til at virke.
Avatar billede cpufan Juniormester
16. januar 2006 - 11:05 #8
fint
Avatar billede henan Nybegynder
16. januar 2006 - 11:18 #9
Har virkelig svært ved helt at komme i gang med DOM/JS. Er der evt. en af jer der kan smidde mig i retning af en rigtig god introduktion til emner som disse? Lige nu roder jeg fx med at finde row'en uden om en td. Kan fint læse cellIndex (med document.selection da der ikke er en id i tabellen) men kan for min død ikke regne ud hvordan jeg så finder rowIndex...
Avatar billede cpufan Juniormester
16. januar 2006 - 11:24 #10
det siger mig ikke en hujende fis :-D
Avatar billede henan Nybegynder
16. januar 2006 - 11:32 #11
Har oprettet et nyt spørgsmål: http://www.eksperten.dk/spm/679917
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