Bekijk Volledige Versie : Javascript createrange()
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?
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.......
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.
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
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();
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.
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
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 ;)
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!
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