Vielen Dank für die beiden hilfreichen Antworten.
Ich glaube das mit dem XMLSerializer ist die eleganteste Lösung, da kann ich vorher noch die Elemente am DOM bearbeiten bearbeiten und anschließend das Body Tag auslösen.
Super Danke.
Vielen Dank für die beiden hilfreichen Antworten.
Ich glaube das mit dem XMLSerializer ist die eleganteste Lösung, da kann ich vorher noch die Elemente am DOM bearbeiten bearbeiten und anschließend das Body Tag auslösen.
Super Danke.
Hallo,
Zuerst mal vielen Dank für die Antworten.
Ich möchte dem Benutzer ermöglichen dass per JS mehrere HTML Seiten (vieleicht 100 - die Anzahl ist variabel) in Form von Kapiteln in ein Dokument kopiert werden. Der Benutzer muss somit nicht jede Seite einzeln auswählen und ausdrucken.
Das mit Ajax hatte ich bereits auch schon probiert:
-...
- Dokument öffnent
- Daten auslesen
- Inhalt als DOM Parsen
da habe ich das Problem, dass es keine innerHTML Funktion gibt mit der ich den gesamten Inhalt des Body Tags ausschneiden kann. Beim Dom gibt es leider nur die textContent() Funktion.
Sorry, beim entfernen der nicht relevanten Codesegmente ist mir ein Fehler unterlaufen.
Der Code ist jetzt auch nocht nicht optimal aber hier habe ich für den IE eine lauffähige Version.
FireFox kann das Body Tag nur auslesen, wenn das Fenster in vorhergehenden Prozess schonmal geladen wurde sprich wenn der Anwender 2 mal auf "Seite in neuem Fenster laden" drückt. Dies wird später aber nicht mehr funktionieren, da ich mehrere Seiten auslesen, ausschneiden und einfügen möchte.
Dies ist der JS Code:
<html><head><title>Test</title>
<script>
function neueTexte () {
var newWin = window.open('', 'testxxx', 'menubar=yes, toolbar=yes, scrollbars=yes,resizable=yes,width=200,height=200,,left=1200,top=450');
// newWin.document.open();
var tempDoc;
try
{
tempDoc = TreeMenu_processDoc('test_Seiteauslesen2.html', tempDoc, newWin);
}
catch(E)
{
alert(E.message);
}
}
//**********************************************
function TreeMenu_processDoc(URL, tempDoc, newWin)
{
var tempDoc = window.open(URL, 'test', 'width=1,height=1,left=1200,top=750');
getBody(tempDoc, newWin );
getBodyContent(tempDoc, newWin);
}
function getBody(win, newWin)
{
var strTest;
var intI;
intI = 1;
while(intI < 6)
{
if(win && win.document && win.document.body)
{
strTest = win.document.getElementsByTagName("body")[0].innerHTML;
intI = 100;
}
intI++;
}
}
function getBodyContent(win, abc)
{
var intI;
intI = 1;
var strText;
while(intI < 2)
{
var strText = win.document.getElementsByTagName("body")[0].innerHTML;
if (!(strText== ""))
{
abc.document.write(win.document.getElementsByTagName("body")[0].innerHTML);
intI = 100;
}
else
{
window.setTimeout( function() {dummywait()}, 2000);
intI++;
}
}
}
function dummywait()
{
}
</script>
</head><body>
<h1>Dynamisch, sehr dynamisch</h1>
<p><a href="javascript:neueTexte()">Seite in neuem Fenster laden</a></p>
</body></html>
Alles anzeigen
Dies ist die HTML Seite 'test_Seiteauslesen2.html', die ausgelesen wird.
Hallihallo Zusammen,
Ich habe schon in mehreren Foren (JavaScript) ein Beitrag erstellt, aber das eigentliche Problem konnte nicht komplett gelöst werden.
Was ich versuche ist eine eine Seite "test.html" in einem neuen Fenster zu öffnen, den Inhalt des Body Tags mit innerHTML auszulesen und diesen in ein neues Fenster zu kopieren. Mit dem IE geht dies Problemlos ich denke der JavaScript Code wird unterschiedlich interpretiert:
<html><head><title>Test</title>
<script>
function neueTexte () {
var newWin = window.open('', 'testxxx', 'menubar=yes, toolbar=yes, scrollbars=yes,resizable=yes,width=200,height=200,,left=1200,top=450');
// newWin.document.open();
var tempDoc;
try
{
tempDoc = TreeMenu_processDoc('test_Seiteauslesen2.html', tempDoc, newWin);
}
catch(E)
{
alert(E.message);
}
}
//**********************************************
function TreeMenu_processDoc(URL, tempDoc, newWin)
{
var tempDoc = window.open(URL, 'test', 'width=1,height=1,left=1200,top=750');
getBody(tempDoc, newWin );
getBodyContent(tempDoc, newWin);
}
function getBody(win, newWin) {
var strTest;
var intI;
intI = 1;
while(intI < 6)
{
if(win && win.document && win.document.body)
{
strTest = win.document.getElementsByTagName("body")[0].innerHTML;
intI = 100;
}
else
{
intI++;
}
}
function getBodyContent(win, abc)
{
var intI;
intI = 1;
var strText;
while(intI < 2)
{
var strText = win.document.getElementsByTagName("body")[0].innerHTML;
if (!(strText== ""))
{
abc.document.write(win.document.getElementsByTagName("body")[0].innerHTML);
intI = 100;
}
else
{
window.setTimeout( function() {dummywait()}, 2000);
intI++;
}
}
}
function dummywait()
{
}
</script>
</head><body>
<h1>Dynamisch, sehr dynamisch</h1>
<p><a href="javascript:neueTexte()">Seite in neuem Fenster laden</a></p>
</body></html>
Alles anzeigen
Kann es sein, das FireFox die neue Seite erst komplett lädt, wenn das JavaScript komplett ausgeführt wurde?
Hat jemand vielleicht einen Workarround für FireFox? (Ajax geht nicht, da es sich um HTML Seiten handelt, die ausgelesen werden - beim HTTP Object gibt es keine InnerHTML Funktion)
Kennt jemand eine FireFox Hotline, bei der man technische Informationen erhalten kann wie FireFox an der Stelle funktioniert?
Viele Grüße