Javascript functie niet In Netscape

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Jasper

jasper

11/12/2005 18:25:00
Quote Anchor link
ik heb een javasript functie gevonden om in een textveld tags rond een geselecteerd veld te zetten. nu wil deze functie alleen maar werken in internet explorer, en dat is nu niet bepaald mijn favoriete browser.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?
function addTag(t){    
    ua = navigator.userAgent;
    if (ua.indexOf("MSIE")>=1) {
        sel = document.selection.createRange();
        par = sel.parentElement();
        if (par.type != "textarea") {
            alert("Please select text.")
        }

        else {
                sel.text="<"+t+">"+sel.text+"</"+t+">";
                sel.select();
                par.focus();
        }
    }

    else {
        alert('This works only in IE4 or above');
    }
}

?>

nu er staat wel in da de browser ie4 of hoger moet zijn, maar als ik deze statement verwijder werkt hij ook niet. kan iemand me uitleggen hoe ik dit kan oplossen ? en waarom ?

ben toch maar FF aan het downloaden voor de zien of het daar niet werkt.
 
PHP hulp

PHP hulp

24/11/2024 09:15:53
 
Jelmer -

Jelmer -

11/12/2005 18:28:00
Quote Anchor link
Bekend probleem.
Misschien heb je hier wat aan, ik denk het wel.
 
Jasper

jasper

11/12/2005 18:35:00
Quote Anchor link
oke, ik moet dus document.getSelection() gebruiken inplaats van document.selection, maar hoe pas ik dit nu aan in mijn script ?
en is het dan mogelijk om bv:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<?
function underline(){    
    ua = navigator.userAgent;
    if (ua.indexOf("MSIE")>=1) {
        sel = document.selection.createRange();
        par = sel.parentElement();
        if (par.type != "textarea") {
            alert("Please select text.")
        }

        else {
                sel.text="<u>"+sel.text+"</u>";
                sel.select();
                par.focus();
        }
    }
else {
        sel = document.getSelection().createRange();
        par = sel.parentElement();
        if (par.type != "textarea") {
            alert("Please select text.")
        }

        else {
                sel.text="<u>"+sel.text+"</u>";
                sel.select();
                par.focus();
        }
    }
}

?>

dit werkt niet! kan iemand het mss verbeteren, in javascript ben ik een absolute beginner, moet er dringend eens een boek over lezen!
 
Jelmer -

Jelmer -

11/12/2005 18:40:00
Quote Anchor link
Je moet niet in plaats van, maar ook gebruiken.

Dit is trouwens echt een pure gok, aangezien ik deze functies van javascript nou net niet echt vaak gebruik :)

Misschien dat deze werkt:
function getSel(tag)
{
var txt = '';
var foundIn = '';
if (window.getSelection)
{
txt = window.getSelection();
window.getSelection() = '<'+tag+'>'+txt+'</'+tag+'>';
}
else if (document.getSelection)
{
txt = document.getSelection();
document.getSelection() = '<'+tag+'>'+txt+'</'+tag+'>';
}
else if (document.selection)
{
txt = document.selection.createRange().text;
document.selection.createRange() = '<'+tag+'>'+txt+'</'+tag+'>';
}
else return;
}
Gewijzigd op 11/12/2005 18:41:00 door Jelmer -
 
Jasper

jasper

11/12/2005 18:48:00
Quote Anchor link
@jelmer, nee deze blijkt ook niet te werken
 
Jasper

jasper

11/12/2005 19:18:00
Quote Anchor link
heeft er nog iemand een idee hoe ik dit zou kunne oplossen ? heb zelf ook al veel gepobeert, maar telken werkt het alleen maar in IE!
 
Jan Koehoorn

Jan Koehoorn

11/12/2005 19:56:00
Quote Anchor link
Klopt, in Netscape en Gecko browsers werkt dat niet omdat die het Range object niet kennen. Ik heb ook al eens geprobeerd een workaround te vinden, zonder succes.

edit: ik nog eens lopen snuffelen, en mozilla browsers kennen wel zoiets als selectionStart en selectionEnd.

Als je textarea 'message' heet kun je dit doen:

var sel_begin = yourform.message.selectionStart;
var sel_eind = yourform.message.selectionEnd;

Met behulp van deze vars kun je de tekst in drie stukken delen via substring (): het deel voor de selectie, de selectie zelf, en het deel na de selectie.
Gewijzigd op 11/12/2005 20:11:00 door Jan Koehoorn
 
Jasper

jasper

11/12/2005 20:42:00
Quote Anchor link
oke, het zal dan maar in internet explorer worden denk ik, meeste klanten gebruiken dat toch, zeker in bedrijven. en in netscape kan je altijd "display as internet explorer" doen, dan werkt het ook!
 
Jan Koehoorn

Jan Koehoorn

11/12/2005 20:50:00
Quote Anchor link
Het laatste cijfer dat ik gezien heb gaf een marktaandeel van 18% voor FireFox ...
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.