Archivlink: javarea.de Forum > JavaScript > nachträglich iframe einbauen
Vollständigen Link anzeigen: javarea.de Forum > JavaScript > nachträglich iframe einbauen

Pages: [1]

geschrieben von Eppi am 30.08.2005 - 23:13
so, jetzt wird's kompliziert :-)

erstmal kurz zur erklärung an was ich gerade schraube und so - dann versteht man das vielleicht besser. also ich erstell für mein cms einen neuen editor, der als bbcode, sourcecode usw. fungieren soll. er ist über nur wenige zeilen überall im quellcode einzubinden. also auch in plugins, modulen etc. das funktioniert schonmal wunderbar.

da so ein editor nun auch sehr viel auf js beruht hab ich nun damit angefangen es ein wenig zu lernen. so das gröbste bekomm ich schon hin. was ich noch garnicht kann sind diese dom sachen die sicherlich sehr wichtig sind und auch genau bei meinem nächsten problem zum tragen kommen.

ich habe ein popup geschrieben, welches mir alle dedi-tags aus dem angegebenem textfeld ausliest. dedi-tags sind für das cms spezifische tags die ähnlich wie html-tags aufgebaut sind. in dem popup kann man dann alle tags per klicki bunti zusammenschrauben und beim speichern kommt es wieder in das textfeld.

da ich ein freak von usability bin, möchte ich nun folgendes umsetzen. ich möchte das ganze nicht über ein popup, sondern über dem textfeld einblenden können. damit nicht alles mitgeladen wird soll dieser bereich nur bei bedarf nachgeladen werden. sowas geht ja recht gut, über nachladen in einem iframe und zurückschreiben in ein div oder so. jetzt möchte ich aber dieses div auch erst im nachhinein erstellen, genau so wie das iframe.

sowas sollte ja über dom möglich sein. könnt ihr mir vielleicht eine gute anlaufstelle dafür geben? vielleicht ein beispielscript wie man ein neues div oder iframe einfügt und wie man es hinbekommt das es direkt vor dieser textarea ist?

vielleicht hat ja auch allgemein jemand bock bei dem projekt mitzumachen, bis jetzt sieht es ganz vielversprechend aus - dafür, das ich js nicht so gut kann *gg*

lieben gruß, paul

geschrieben von Eppi am 31.08.2005 - 02:20
sagt mal, gibt es in js überhaupt einen einfachen string_replace? wenn ich über die regulären ausdrücke geh zerschießt es mir manchmal die stringbehandlung, da der reguläre ausdruck irgendwelche sonderzeichen beinhalten kann. auf deutsch gesagt, ich möchte eigentlich nur einen einfachen string gegen ein zeichenwirrwarr tauschen & andersrum :-)

gruß, paul

geschrieben von Martin am 31.08.2005 - 12:51
Ave,

http://de.selfhtml.org/javascript/o....te_element

Hier wird erklärt wie man neue Elemente per JS erzeugt.

mfg martin

geschrieben von René am 31.08.2005 - 13:21
Zitat
 Original geschrieben von Eppi am 31.08.2005 - 02:20

sagt mal, gibt es in js überhaupt einen einfachen string_replace? wenn ich über die regulären ausdrücke geh zerschießt es mir manchmal die stringbehandlung,

Poste doch mal einen der dir alles zerschießt.

----

zu der anderen Sache wenn du schon im vorhinein weist das dort mal das Iframe angezeigt werden soll. Dann stell doch schon mal ein <span id="irgendwas"></span> dort hin und dann fügst du den Iframe mittels getElementByID('irgendwas').innerHTML = '<iframe src="...." ....> ........'; dort ein. Du kannst hier jeglichen HTML-Code in das <span>...</span> einfügen.


geschrieben von Eppi am 31.08.2005 - 14:53
ok, schonmal danke für eure hilfe!

hier ein kurzer ausschnitt:
HTML-Quelltext
1: 
2: 
3: 
4: 
5: 
6: 
7: 
8: 
9: 
for (i=0; i<parm['deditag'].length; i++) {
	regexp = new RegExp(parm['deditag'][i]['full_tag'], "i");
	deditag = '<dedi:'+mode;
	for (var config in parm['deditag'][i]) {
		if (config != 'full_tag' && config != 'in_tag' && parm['deditag'][i][config] != '') deditag = (isNaN(config)) ? deditag+' '+config+'="'+parm['deditag'][i][config]+'"' : deditag+' '+parm['deditag'][i][config];
	}
	deditag = (parm['deditag'][i]['in_tag']) ? deditag+'>'+parm['deditag'][i]['in_tag']+'<dedi:'+mode+'>' : deditag+' />';
	tmp = tmp.replace(regexp, deditag);
}

jedes ")" welches in den deditag eingebaut wird zeerschießt mir das ersetzen.

das mit dem iframe einfügen hab ich jetzt hinbekommen. ein paralleles einfügen eines anderen divs auch. was ich aber garnicht hinbeekomme ist das ersetzen des inhalts des neuen divs durch den inhalt des iframes. danach weiß ich auch noch nciht wie ich den js-kram in diesem neuen code schreiebn muß um ihn benutzen zu können. er bleibt glaube im iframe hängen oder so.

aberalles der reihe nach. erstmal versuchen den inhalt aus dem iframe in das div zu laden. vielleicht über onload aus dem iframe heraus? nur wie?

gruß, paul

geschrieben von René am 31.08.2005 - 17:01
tmp = tmp.replace(regexp, deditag);
in regexp dürfen keine, ich sag mal Steuerzeichen vorhanden sein wenn ja mußt du diese escapen.

[ ( ^ . / $ ) ] --> \[ \( \^ \. \/ \$ \) \]

Meine das so wenn du eins von den Zeichen oben als normales ersetzungszeichen Verwenden willst muss es entwertet werden.

http://de.selfhtml.org/javascript/o....llgemeines schau dir mal hier den Abschnitt Syntax regulärer Ausdrücke an.

geschrieben von Eppi am 31.08.2005 - 17:04
ja das weiß ich doch und genau deswegen such ich halt eine stink normale string_replace funktion für js. gibt es die, oder ansonsten eine andere idee wie man das problem lösen kann?

gruß, paul

geschrieben von René am 31.08.2005 - 17:23
Also ein stink_normales str_replace wie in PHP gipt es nicht. Abhilfe würde schafen wenn du den Text der in regexp als Ersetzungstext steht vorher ebenfalls mit einem replace bearbeitest.

EDIT:

Hier mal wie ich das in einem Script gelöst habe. Das box.id enthält Verzeichnispfade die ja unter Unix mit /hhh/ geschrieben werden das / ist aber im Regexp ein Steuerzeichen.

HTML-Quelltext
1: 
2: 
3: 
4: 
5: 
6: 
7: 
8: 
9: 
10: 
11: 
12: 
13: 
14: 
15: 
var str = (typeof(line) == 'string') ? line.substring(2, line.length) : line.id.substring(2, line.id.length);
var box = document.getElementById(str);

var far = eval('/^(' + box.id.replace(/\//g, '\\/') + ')+./i');
var tra = eval('/^(' + box.id.replace(/\//g, '\\/') + ')+(\\/|$)/i');

if (far.test(elements[i].id))
{
...
}

if (tra.test(elements[i].id))
{
...
}

geschrieben von Eppi am 31.08.2005 - 17:33
es gibt aber kein massenreplace, oder? ich muß dann wieder in einer schleife den kram replacen? und das für jedes tag einzeln?

gruß, paul

geschrieben von René am 31.08.2005 - 17:48
versuch mal:

HTML-Quelltext
1: 
regexp.replace('/\(|\[/g', '\\(|\\[');

geschrieben von Eppi am 31.08.2005 - 18:12
klasse das sieht gut aus! muß erstmal weg - melde mich später nochmal...

gruß, paul

geschrieben von Eppi am 31.08.2005 - 21:07
hmm, also so richtig komm ich damit noch nicht klar :-(

ich verwende ja hinten z.b. den parameter i. den hab ich mir auch nur irgendwo abgeschaut, was er aber bedeutet weiß ich nciht. ich finde auch nirgends eine liste für diese parameter. gibt es z.b. eine möglichkeit die schleife, die ich mir gebaut habe um alle einträge zu finden wegzulassen? also kann ich dem gesamten reg-exp sagen, das er mir gleich alle treffer ausgeben soll?

gruß, paul

geschrieben von Eppi am 01.09.2005 - 09:42
so dasd mit dem escapen schieb ich noch ein wenig, mach erstmal andere sachen fertig. das dynaimsche generieren des iframes und des layers hab ich hinbekommen, auch die übernahme des iframes in den layer. das js bleibt allerdings im frame hängen. gibt es eine möglichkeit objekte zu kopieren? dann könnte ich es in den hauptframe kopieren. konnte bis jetzt leider ncihts derartiges finden :-/

gruß, paul


Powered by: JBB v.2.0.4 Copyright ©2000-2006, www.javarea.de.