Css Datei anhängen

byronic

Grünschnabel
Hallo, unzwar würde ich gerne eine Css datei per JS anhängen. Unzwar öffne ich ein Popup mittels dieser funktion.

function popup(obj,w,h) {
var url = (obj.getAttribute) ? obj.getAttribute('href') : obj.href;
if (!url) return true;
w = (w) ? w += 20 : 150; // 150px*150px is the default size
h = (h) ? h += 25 : 150;
var args = 'width='+w+',height='+h+',resizable';
popdown();

pop = window.open(url,'',args);
return (pop) ? false : true;

}

Dieser würd ich nun gerne noch eine zustäzliche css Datei anhängen, kriege es aber nicht hin.
 
Hi,

mit folgender Routine lässt sich ein CSS nachladen.
Code:
function setCss(strCSS){
  // CSS für IEs nachladen
  if(pop.document.createStyleSheet)
    pop.document.createStyleSheet(strCSS);
  // CSS für Mozilla, Netscape, Opera nachladen
  else{
    var objStyle = pop.document.createElement("style");
    var objText = pop.document.createTextNode("@import url("+strCSS+") screen;");
    objStyle.appendChild(objText);
    pop.document.getElementsByTagName("body")[0].appendChild(objStyle);
  }
}
Problematisch ist an dieser Routine jedoch, dass für Nicht-IEs nicht bekannt ist, wann das body-Objekt im PopUp-Dokument existiert. Es kann zwar mit einer Zeitverzögerung gearbeitet werden, aber 100%-ig sicher ist die Methode nicht.
Code:
function popup(obj,w,h) {
  var url = (obj.getAttribute) ? obj.getAttribute('href') : obj.href;
  if (!url) return true;
  w = (w) ? w += 20 : 150; // 150px*150px is the default size
  h = (h) ? h += 25 : 150;
  var args = 'width='+w+',height='+h+',resizable';
  popdown();

  pop = window.open(url,'test',args);
  // CSS zeitverzögert nachladen
  window.setTimeout(function(){setCss("style.css");}, 1000);

  return (pop) ? false : true;
}
Vielleicht kannst du damit etwas anfangen.

Ciao
Quaese
 
function popdown() {
if (pop && !pop.closed) pop.close();
}

function popup(obj,w,h) {
var url = (obj.getAttribute) ? obj.getAttribute('href') : obj.href;
if (!url) return true;
w = (w) ? w += 20 : 150; // 150px*150px is the default size
h = (h) ? h += 25 : 150;
var args = 'width='+w+',height='+h+',resizable';
popdown();
pop = window.open(url,'',args);
pop.document.profile = 1;
return (pop) ? false : true;

}


function is_profile() {

if(document.profile == 1) {
alert(document.profile); // Prüfung ob profile 1 ist und evntl. css laden
}
}
is_profile();




Ich hab mal folgendes probiert doch irgwie klappt es nicht so ganz. Ich habe bei dem Aufruf des popup eine pop.document.profile auf 1 gesetzt. Wenn das Popup jetzt öffnet findet er diese und und gibt mir in der Funktion dadrunter einfach nen Probe Alert aus.

Mein Problem ist jetzt, dass die Variable irgenwie beim Navigieren in diesem Popup dann verschweindet. Wenn ich zb dann einen Link öffne, ist sie dann verloren, und er gibt mir undefined aus. Woran könnt das liegen, denn ich würd gerne die gültigkeit dieser Var bis zum schliesen des Fensters erreichen, sprich sie soll immer wieder in dem geöffneten Popup erreichbar sein.


Mein Vorhaben: Sobal ich das Popup öffne, soll dort eine Variable gesetzt werden, die unendlich gültig ist. Sobald Sie verfügbar ist, soll die css eingebunden werden.
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück