PDA

Bekijk Volledige Versie : Javascript createrange()



ju5t
23/05/07, 16:19
De volgende code werkt prima in IE. Maakt een keurig object aan die verder ook te gebruiken is. Het werkt alleen niet in Firefox.


document.getElementById('myEditor').contentWindow. document.selection.createrange()

Ter informatie, ik ben NIET op zoek naar de volgende code:


document.getElementById('myEditor').contentWindow. document.getSelection()

Ik wil het object krijgen en hier execCommand op uitvoeren. Wie heeft er een idee?

ol4pro
23/05/07, 22:29
En wat voor een soort exec wil je gaan uitvoeren met Javascript ?

a : RegExp
b : Trying to execute some .exe on some puter somewhere ...

Lijkt mij dat je iets op de clients machine wilt laten executen.......

ju5t
23/05/07, 22:49
Lijkt mij niet.

document.execCommand("Bold", false, null);

Zo kun je bijvoorbeeld tekst dikgedrukt maken. Alleen moet het dus ook zo werken dat je tekst kunt selecteren en dit dikgedrukt maakt. Hiervoor moet de geselecteerde tekst een object worden.

Met document.getElementById('myEditor').contentWindow. document.getSelection() krijg je de string, niet het object in Firefox. Mijn vraag is dus hoe ik het object krijg.

Bullcat
24/05/07, 00:55
Ik weet niet of je wat aan deze link hebt, maar ik kwam die vanmiddag tegen en dacht misschien heb je er wat aan !

http://www.w3schools.com/default.asp

_arno_
24/05/07, 10:37
van een wysiwyg editor die ik eeuwen geleden gemaakt heb, wat het precies doet/deed weet ik niet meer.


var html = document.getElementById('editor').contentWindow.do cument.body.ownerDocument.createRange();

ju5t
24/05/07, 16:51
Dat zal waarschijnlijk wel werken in Internet Explorer, maar createRange() is onbekend in Firefox. Ik zoek dus eigenlijk een vergelijkende functie of manier om dit wel te kunnen doen. Google helpt niet - of ik doe iets fout met zoeken.

Groovy
28/05/07, 13:16
Volgens mij wordt hier gewoon een tutorial gegeven voor firefox, en de createRange() functie zit er ook in:

http://www.javascriptkit.com/javatutors/dynamiccontent4.shtml

ju5t
31/05/07, 08:46
Ik krijg de volgende error in Firefox:


Fout: document.getElementById("myEditor").contentWindow.document.selection has no properties
Bronbestand: http://url/javascript/admin/page-editor.component.js
Regel: 448

Wat wel belangrijk is, is dat we werken met een iframe.


<iframe onload="javascript:loadRTE();" frameborder="0" scrolling="yes" src="url" class="ContentEditor" id="myEditor" name="namEmyEditor">
</iframe>

Het verschil in 'laden' van de editor zit in Internet Explorer en Firefox in het volgende:


if(window.navigator.appName == "Microsoft Internet Explorer")
{
document.getElementById('myEditor').contentWindow. document.designMode = "on";
}
else
{
document.getElementById('myEditor').contentDocumen t.designMode = "on";
}

Maar ook document.getElementById('myEditor').contentDocumen t.selection.createRange() geeft een foutmelding?

Niemand ervaring verder met rich text editors in Firefox en het uitvoeren van execCommand?

Erg frustrerend, maar het werkt nu met de volgende code:


function docExec(doctype, selecttype)
{
document.getElementById('myEditor').contentWindow. document.execCommand(doctype, false, selecttype);
document.getElementById('myEditor').contentWindow. focus();
}


Met de volgende code kun je dan tekst dikgedrukt maken etc.



<a href="javascript:docExec('bold',null);">bold</a>
<a href="javascript:docExec('underline',null);">underline</a>
<a href="javascript:docExec('italic',null);">italic</a>

Alleen wil nu het uitlijnen niet in Internet Explorer :)


<a href="javascript:docExec('justifycenter',null);">center</a>

Mocht iemand hier de oplossing voor weten ;)

_arno_
31/05/07, 15:38
getUp:
Ik zelf heb ook een keer mee lopen prutsen ( aanzienlijke tijd geleden ), mijn editor heeft geen problemen met firefox, en gebruikt naar mijn idee ( wat ik me kan herinneren ) gewoon:
document.getElementById(this.WYSIWYG_editor).conte ntWindow.document.execCommand(cmd, false, option);

Ik heb helaas niet zoveel tijd om uit te zoeken hoe het precies zat, maar hier is de werking:
http://wysiwyg.van-rossum.com

En de source code:
http://wysiwyg.van-rossum.com/editor.js


Misschien kun je er zelf wat uithalen, succes.

Stefan Mensink
31/05/07, 15:46
Je kan de exec gewoon doen op het document, het hoeft niet per se op de selectie.

document.getElementById('myEditor').contentWindow. document.execCommand(style, false, null);

Wil je toch per se een range:

var win = document.getElementById("myEditor").contentWindow;
var range = IE ? win.document.selection.createRange() : win.getSelection().getRangeAt(0);

en wat is IE?: var IE = (document.all) ? true : false;

Succes!

ju5t
31/05/07, 18:07
Ik ben erachter waarom het alignen niet werkt, de oplossing weet ik alleen niet.


document.getElementById('myEditor').contentWindow. document.execCommand('justifyright', false, null);

IE maakt hier de volgende code van: <p align=right>tekst</p>
FF maakt deze code: <p style="text-align: right">text</p>

Zowel de editor in IE, als het uiteindelijke resultaat in IE, werkt niet. Terwijl de Firefox manier wel werkt. Wat doe ik nu fout? Heeft het iets te maken met het UseCSS gebeuren?

Stefan Mensink
01/06/07, 19:27
Waarschijnlijk heb je in de CSS staan: p { text-align: left; }

De CSS heeft hier de upper hand.

SebastiaanStok
02/06/07, 16:45
Was een tijd gelden hier een artikel over op Quirksmode :)
http://www.quirksmode.com/

Edit:
http://www.quirksmode.org/dom/range_intro.html