Web-TorMedlem sedan nov. 200013 890 inläggTrådstart#1 Jag försöker få in ett class-namn i en popup. Jag vill använda funktionen window.createPopup.
Jag har försökt på två olika sätt (de bortkommenterade raderna i koden) men ingen av dom funderar.
Fungerar inte = Ger inte något felmeddelande men påverkar inte utseendet på bakgrunden.
<html>
<head>
<script>
var oPopup = window.createPopup();
function ButtonClick(){
var oPopBody = oPopup.document.body;
// oPopBody.setAttribute('className','test')
// oPopBody.className='test';
oPopBody.innerHTML = "Click outside <b>popup</b> to close.";
oPopup.show(100, 100, 180, 25, document.body);
}
</script>
<style>
.test{background:#369;}
</style>
</head>
<body>
<button onclick="ButtonClick()">Click Me!</button>
</body>
</html>
PPeter SMedlem sedan dec. 20025 483 inlägg <html>
<head>
<script>
var oPopup = window.createPopup();
function ButtonClick(){
var popdoc = oPopup.document;
popdoc.open();
popdoc.write("<head><style type='text/css'>.test{color:red;} body{ border:0; overflow:hidden }<\/style><\/head>");
popdoc.write("<body>Click outside <b>popup</b> to close.<\/body>");
popdoc.close();
popdoc.body.setAttribute("className","test");
oPopup.show(100, 100, 180, 65, document.body);
}
</script>
<style>
.test{background:#369;}
</style>
</head>
<body>
<button onclick="ButtonClick()">Click Me!</button>
</body>
</html>
Problemet med denna lösning är att document.write() av någon anledning orsakar en vertikal scrollbar (därav overflow:hidden).

Web-TorMedlem sedan nov. 200013 890 inläggOkey, det var ju ett sätt. Fast det innebär ju att jag måste skriva samma information på två ställen.
Då är det nästan enklare att skriva:
objPopBody.style.border="1 solid #888888";
objPopBody.style.fontFamily="verdana";
objPopBody.style.backgroundColor="#ffffff";
...o.s.v.
Jag skulle vilja använda samma classer som finns i min vanliga CSS just för att slippa redundant CSS-information.
PPeter SMedlem sedan dec. 20025 483 inlägg Testa detta istället:
function ButtonClick(){
var popdoc = oPopup.document;
popdoc.open();
popdoc.write("<head><style type='text/css'>body{ border:0; overflow:hidden }<\/style><\/head>");
popdoc.write("<body>Click outside <b>popup</b> to close.<\/body>");
popdoc.close();
popdoc.styleSheets[0].addImport("foo.css");
popdoc.body.setAttribute("className","test");
oPopup.show(100, 100, 180, 65, document.body);
}

Web-TorMedlem sedan nov. 200013 890 inläggVisst! Det funkar. Det tar visserligen en stund att importera css-filen varje gången men jag får väl bryta ur den här classen och lägga i en egen fil.
Nu till nästa lilla problem:
Texten som ska visas i popupen vill jag läsa in från själva HTML-filen på det här sättet:
<html>
<head>
<script>
var oPopup = window.createPopup();
function ButtonClick(element){
var oPopBody = oPopup.document.body;
oPopBody.innerHTML="<div style='border:1px solid #555;padding:2'>"+element.lastChild.innerHTML+"</div>";
oPopup.show(100, 100, 180, 50, document.body);
}
</script>
</head>
<body bgcolor="#DDDDDD">
<button onclick="ButtonClick(this)">Click Me!
<div style="display:none;">Text i popup kommer här.</div>
</button>
</body>
</html>
Problemet är att få rätt höjd på popupen. Jag vill ju inte hårdkoda in 50 som jag har gjort i det här fallet. 
Web-TorMedlem sedan nov. 200013 890 inläggHittade följande fullösning på MS hemsida:
objPop.show(0, 0, 300, 0);
var realHeight = objPopBody.scrollHeight;
objPop.hide();
objPop.show(100,100, 150, realHeight,document.body);