Iframe kijelölt kép kinyerése
Sziasztok!
Van egy kis kódrészletem
Van egy szövegszerkesztőm amiben már ki tudom nyerni azokat a képeket amik abban szerepelnek. De nekem csak arra lenne szükségem amit éppen aktuális kijelöltek.
Van erre valamilyen beépített fvg?
Jah és mielőtt írnátok már próbáltam a domPath = window.document.getElementById('box').contentDocument;
var hehe = domPath.getSelection();
de csak textre működik.
Csak firefox alatt kell hogy menjen.
Előre is nagyon köszönöm.
omelon
Ui.: a képeknek nem lehet id je sajnos :(
■ Van egy kis kódrészletem
window.onload = function () {
Editor = document.getElementById('box').contentWindow.document;
Editor.designMode = "on";
}
function proba() {
images = Editor.body.getElementsByTagName('img');
for( var i = 0; images.length; i++ ) {
images[i].setAttribute('border', 10);
images[i].setAttribute('align', 'right');
images[i].setAttribute('alt', 'próba szöveg');
}
}
Editor = document.getElementById('box').contentWindow.document;
Editor.designMode = "on";
}
function proba() {
images = Editor.body.getElementsByTagName('img');
for( var i = 0; images.length; i++ ) {
images[i].setAttribute('border', 10);
images[i].setAttribute('align', 'right');
images[i].setAttribute('alt', 'próba szöveg');
}
}
Van egy szövegszerkesztőm amiben már ki tudom nyerni azokat a képeket amik abban szerepelnek. De nekem csak arra lenne szükségem amit éppen aktuális kijelöltek.
Van erre valamilyen beépített fvg?
Jah és mielőtt írnátok már próbáltam a domPath = window.document.getElementById('box').contentDocument;
var hehe = domPath.getSelection();
de csak textre működik.
Csak firefox alatt kell hogy menjen.
Előre is nagyon köszönöm.
omelon
Ui.: a képeknek nem lehet id je sajnos :(
milyen szövegszerkesztő?
A Tinymce firefox esetén pl. ha jól tudom egy új tulajdonságot ad a kijelölt képnek (_moz_resizing), keress rá azokra.
Egy általam fejlesztett
Editor = document.getElementById('box').contentWindow.document;
Editor.designMode = "on";
}
function proba() {
var insertName = document.getElementById('box').contentWindow.document.getSelection();
alert( insertName.text.scr )
images = Editor.body.getElementsByTagName('img');
for( var i = 0; images.length; i++ ) {
images[i].setAttribute('border', 0);
images[i].setAttribute('align', 'left');
images[i].setAttribute('alt', 'Kép');
images[i].setAttribute('vspace', '10');
images[i].setAttribute('hspace', '10');
}
}
// Stilusok formazasa
function dowithtext(text) { Editor.execCommand(text, false, null); }
// Tetszoleges html kod beszurasa az szerkesztobe
function InsertHtml(text) {
Editor.execCommand("insertHTML", false, text);
}
function InsertImg(text) {
Editor.execCommand("insertHTML", false, '<img src="' + text + '" border="0" align="left" /><br />' );
}
// Szerkeszto novelese csokkentese
function textbox_resize( pix ) {
var box = document.getElementById('box');
var new_height = (parseInt(box.style.height) ? parseInt(box.style.height) : 300) + pix;
if ( new_height > 0 ) {
box.style.height = new_height + 'px';
}
return false;
}
// HTML kod kinyerese
function getText( i ) {
if ( i == 1){
var text = document.getElementById('bodytext');
text.value = Editor.body.innerHTML;
} else {
var text = document.getElementById('bodytext');
Editor.body.innerHTML = text.value;
}
}
function getpostdata() {
var text = document.getElementById('bodytext').value;
if ( navigator.appCodeName == "Mozilla" ) {
document.getElementById('box').contentDocument.body.innerHTML = text;
} else {
document.getElementById('box').innerHTML = text;
}
}
function showhtmlcode() {
getText(1);
var style = document.getElementById('bodytext').style;
style.display = style.display? "":"block";
var style2 = document.getElementById('box').style;
style2.display = style2.display? "":"none";
}
function selectTags( name ) {
var dropdownIndex = document.getElementById( name ).selectedIndex;
var dropdownValue = document.getElementById( name )[dropdownIndex].value;
var insertName = document.getElementById('box').contentWindow.document.getSelection();
InsertHtml( '<' + dropdownValue + '>' + insertName + '</' + dropdownValue + '>' );
}
<div class="editorbuttons">
<img src="_editor/images/bold.gif" onclick="dowithtext('bold')" title="Félkövér" class="icon" id="bold" />
<img src="_editor/images/italic.gif" onclick="dowithtext('italic')" title="Dőlt" class="icon" id="italic" />
<img src="_editor/images/underline.gif" onclick="dowithtext('underline')" title="Aláhúzott" class="icon" id="underline" />
<img src="_editor/images/removeformat.gif" onclick="dowithtext('removeformat')" title="Stílusok törlése" class="icon" id="removeformat" />
<img src="_editor/images/justifyleft.gif" onclick="dowithtext('justifyleft')" title="Balra zárt" class="icon" id="justifyleft" />
<img src="_editor/images/justifycenter.gif" onclick="dowithtext('justifycenter')" title="Középre zárt" class="icon" id="justifycenter" />
<img src="_editor/images/justifyright.gif" onclick="dowithtext('justifyright')" title="Jobbra zárt" class="icon" id="justifyright" />
<img src="_editor/images/justifyfull.gif" onclick="dowithtext('justifyfull')" title="Sorkizárt" class="icon" id="justifyfull" />
<img src="_editor/images/insertunorderedlist.gif" onclick="dowithtext('insertunorderedlist')" title="Felsorolás" class="icon" id="insertunorderedlist" />
<img src="_editor/images/insertorderedlist.gif" onclick="dowithtext('insertorderedlist')" title="Számozás" class="icon" id="insertorderedlist" />
<img src="_editor/images/link.gif" onclick="CreatePopup('http://borsa.hu/admin/_editor/insertlink.html', 700, 400)" title="Hivatkozás beszúrása" class="icon" id="link" />
<img src="_editor/images/unlink.gif" onclick="dowithtext('unlink')" title="Hivatkozás törlése" class="icon" id="unlink" />
<img src="_editor/images/editimage.gif" onclick="proba(document.getElementById('bodytext'))" title="Kép szerkesztése" class="icon" id="editimage" />
<img src="_editor/images/insertimage.gif" onclick="CreatePopup('http://borsa.hu/admin/editor/image.php?page=gallery&teszt=1', 1024, 768)" title="Kép beszúrása" class="icon" id="insertimage" />
<img src="_editor/images/flash.gif" onclick="CreatePopup('http://borsa.hu/admin/_editor/insertflash.html', 500, 700)" title="Flash beszúrása" class="icon" id="flash" />
<img src="_editor/images/paginator.gif" onclick="InsertHtml('[PAGEBREAK,OLDALCÍMÉTADDMEG]')" title="Lapozás beszúrása" class="icon" id="paginator" />
<img src="_editor/images/html.gif" onclick="showhtmlcode();" title="HTML kód nézet" class="icon" id="html" />
<img src="_editor/images/down.gif" onclick="textbox_resize(100);" title="Szerkesztő növelése" class="icon" id="down" />
<img src="_editor/images/up.gif" onclick="textbox_resize(-100);" title="Szerkesztő csökkentése" class="icon" id="up" />
<img src="_editor/images/undo.gif" onclick="dowithtext('undo')" title="Vissza" class="icon" id="undo" />
<img src="_editor/images/redo.gif" onclick="dowithtext('redo')" title="Előre" class="icon" id="redo" /><br />
<select unselectable="on" id="formatting" onchange="selectTags(this.id);">
<option value="">Stílusok</option>
<option value="h6">Kiemelt szöveg</option>
<option value="h5">H5</option>
<option value="h4">H4</option>
<option value="h3">H3</option>
<option value="h2">H2</option>
<option value="h1">H1</option>
</select> </div>
<iframe width="600" height="500" scrolling="auto" class="editor" name="box" id="box"></iframe>
<textarea style="width:600px;height:500px;" name="bodytext" id="bodytext" onchange="getText(2);"></textarea>
</div>
itt az egész kód ebből szerintem világos lesz :)
uh
Kulcsszó: DOM selection
Namost, a getSelection() sima szöveget ad vissza, ha a document-en használod, helyette window-on hívd meg. Ezután még kell a getRangeAt függvény, hogy elérd a DOM elemeket.
Hát ez igen nyakatekert megoldás, nem tudom, hogy van e rá egyszerűbb, de most már engem is érdekelne :)
Források:
Using the range object in Mozilla
Getting range objects from DOM selection
Selection object in Firefox
Moz Developer Center page on Ranges