ugrás a tartalomhoz

Iframe kijelölt kép kinyerése

omelon · 2008. Nov. 14. (P), 15.43
Sziasztok!

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');
}

}


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 :(
 
1

milyen szövegszerkesztő?

Drawain · 2008. Nov. 14. (P), 16.40
Nem ártana tudni milyen szövegszerkesztőről beszélsz, mert így nem egészen egyértelmű mit jelent az, hogy "kijelölni".

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.
2

Egy általam fejlesztett

omelon · 2008. Nov. 14. (P), 16.44
Egy általam fejlesztett editorról beszélünk.

window.onload = function () {
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 :)
3

uh

Drawain · 2008. Nov. 15. (Szo), 02.55
Na most kicsit beleástam magam a problémába, azt kell, hogy mondjam, nem lesz egyszerű ezt megoldani...

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.

   var selection = window.getSelection();
   var range = selection.getRangeAt(0);   
   var parent = range.cloneContents();
A parent-nek van egy childNodes property-je, történetesen egy tömb, amiben benne van az összes DOM tag. Ezen végig kell futni és ki lehet nyerni belőle az elemeket. Persze ha az egyes DOM tagokon belül vannak a képek (pl. <p><img .../></p>), akkor az adott elem childNodes tömbjébe is be kell lépni...

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