Avatar billede l3kris Nybegynder
14. november 2006 - 11:40 Der er 17 kommentarer og
2 løsninger

sammenskrivning af to javascripts, så det virker

Jeg har denne kode, som kun virker i IE:

*******
function resize_iframe()
{

    var height=window.innerWidth;//Firefox
    if (document.body.clientHeight)
    {
        height=document.body.clientHeight;//IE
    }
    //resize the iframe according to the size of the
    //window (all these should be on the same line)
    document.getElementById("iframe").style.height=parseInt(height-document.getElementById("iframe").offsetTop)+"px";
}

window.onresize=resize_iframe;
*******

Og så har jeg fundet denne:

*******
// CSS Browser Selector  v0.2.5
// Documentation:        http://rafael.adm.br/css_browser_selector
// License:              http://creativecommons.org/licenses/by/2.5/
// Author:                Rafael Lima (http://rafael.adm.br)
// Contributors:          http://rafael.adm.br/css_browser_selector#contributors
var css_browser_selector = function() {
    var
        ua=navigator.userAgent.toLowerCase(),
        is=function(t){ return ua.indexOf(t) != -1; },
        h=document.getElementsByTagName('html')[0],
        b=(!(/opera|webtv/i.test(ua))&&/msie (\d)/.test(ua))?('ie ie'+RegExp.$1):is('gecko/')? 'gecko':is('opera/9')?'opera opera9':/opera (\d)/.test(ua)?'opera opera'+RegExp.$1:is('konqueror')?'konqueror':is('applewebkit/')?'webkit safari':is('mozilla/')?'gecko':'',
        os=(is('x11')||is('linux'))?' linux':is('mac')?' mac':is('win')?' win':'';
    var c=b+os+' js';
    h.className += h.className?' '+c:c;
}();
*******

Er der nogen, der vil skrive de to sammen - eller skrive noget tilsvarende?

Som det måske fremgår, skal "iframe" fylde siden ud i højden (altså ikke 'height:100%;' fordi iframe har 'top:200px;').
Avatar billede jhe-ting Nybegynder
14. november 2006 - 13:31 #1
skal du ikke bare rette :
  var height=window.innerWidth;//Firefox
til :
  var height=window.innerHeight;//Firefox
???
Avatar billede jhe-ting Nybegynder
14. november 2006 - 13:35 #2
Det anbefales flere steder at bruge detektion af faciliteter og ignorere userAgent. Der er mange browsere der lyver om hvem de er, for ikke at blive frasorteret.
Avatar billede l3kris Nybegynder
14. november 2006 - 14:53 #3
innerWidth / innerHeight - ja, jeg studsede godt nok, men glemte det så igen. Det kommer der af at downloade fra nettet...

Men det løser ikke mit problem. Jeg er nogenlunde hjemme i PHP, men det går ikke her, så jeg er på udebane. Faciliteter eller userAgent, jeg er nødt til at skyde genvej :)
Avatar billede l3kris Nybegynder
14. november 2006 - 14:59 #4
... og det hjalp egentlig heller ikke på mit problem i FireFox, hvor iframe stadig bliver 200px stor (vel en form for standard).
Avatar billede olebole Juniormester
14. november 2006 - 15:00 #5
<ole>

Jeg forstår ikke, hvorfor de to scripts skal sammenskrives ... det ville da være overkill. Hvad er det reelt, der er dit problem?
Hvad sker der f.eks, hvis du kører iframe-scriptet?

/mvh
</bole>
Avatar billede olebole Juniormester
14. november 2006 - 15:01 #6
- og hvordan ser resten af din kode ud? Ikke mindst: Hvad skriver du før <html>-tagget?
Avatar billede l3kris Nybegynder
14. november 2006 - 15:11 #7
<?php
require_once('../Connections/mySQL.php');
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>
<head>
<title>untitled document</title>
<link href="main.css" rel="stylesheet" type="text/css">
<script language="JavaScript">
<!--
function resize_iframe()
{

    var height=window.innerHeight;//Firefox
    if (document.body.clientHeight)
    {
        height=document.body.clientHeight;//IE
    }
    //resize the iframe according to the size of the
    //window (all these should be on the same line)
    document.getElementById("iframe").style.height=parseInt(height-document.getElementById("iframe").offsetTop)+"px";
}

window.onresize=resize_iframe;

//-->
</script>

</head>

<body>

<iframe src="content.php" id="content" name="iframe" frameborder="0" onLoad="resize_iframe();"></iframe>

... og så videre
Avatar billede olebole Juniormester
14. november 2006 - 15:42 #8
Med den DTD disabler du nogle af de væsentligste områder af CSS i IE6 (hvilketogså har implikationer for den slags målinger, du forsøger at lave). Prøv til en begyndelse denne i stedet:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
Avatar billede l3kris Nybegynder
14. november 2006 - 17:41 #9
Det hjalp ikke - tværtimod blev nogle øvrige <div> med height:100% nu vist som height:200px, samtidig med at resize_iframe nu heller ikke virker i IE6 - og det er jo helt galt ;(
Avatar billede mcardle Nybegynder
14. november 2006 - 20:18 #10
Er det ikke bare fordi din iframe ikke har noget id der iframe.

Så den hedder:
document.getElementById("content").style.height=parseInt(height-document.getElementById("content").offsetTop)+"px";

i stedet for?
Avatar billede l3kris Nybegynder
14. november 2006 - 20:24 #11
jo, Ulrik - det fandt jeg også lige ud af :)
Avatar billede l3kris Nybegynder
14. november 2006 - 20:39 #12
Problemet ligger jo i getElementById, hvor IE åbenbart godt kan tage efter name, mens Firefox er mere regelret og kun går efter Id (min iframe havde forskelligt id og name - det har den ikke mere).

NB: Mcardle og jeg har begge arbejdet på samme hjemmeside på skift :)
Avatar billede mcardle Nybegynder
14. november 2006 - 20:44 #13
Det må jo give point :P
Avatar billede jhe-ting Nybegynder
14. november 2006 - 20:46 #14
jo - hvad med en lille 'deler'
Avatar billede l3kris Nybegynder
14. november 2006 - 20:58 #15
Hmm, ja egentlig fandt jeg selv ud af det med id, før mcardle gjorde mig opmærksom på det, men jeg fik jo ikke skrevet det her, så det er nok rimeligt nok :)
Avatar billede olebole Juniormester
15. november 2006 - 15:04 #16
- men det ændrer ikke ved, at du er nødt til at bruge en fuld DTD - f.eks. den jeg viste i (14/11-2006 15:42:47). Gør du ikke det, disabler du som sagt nogle af de vigtigste dele af CSS i IE6.

DTD'en er ikke årsagen til, din side 'går i stykker', når den bliver sat ind ... det er din kode, den er helt gal med. Overholdt din kode bare nogenlunde CSS-standarden, ville din side se ens ud i FF og IE, når DTD'en bliver sat ind  ;o)
Avatar billede l3kris Nybegynder
15. november 2006 - 16:31 #17
Nej, for som nævnt 14/11-2006 17:41:45, så ændrer den ved andre dele af opsætningen - og kun i IE6. Men jeg skal huske det til andre sammenhænge.
Avatar billede olebole Juniormester
20. november 2006 - 13:39 #18
Jamen, at DTD'en ændrer på visse dele af dokumentet, skyldes jo netop, din kode er noget skidt. Med en god kode og en DTD, er der (stort set) ikke forskel mellem IE6 og FF.

DTD'en er i øvrigt absolut obligatorisk ... uden den er der faktisk slet ikke tale om et HTML-dokument  ;o)
Avatar billede l3kris Nybegynder
03. december 2006 - 13:42 #19
Det er fint nok, men hvis jeg kunne skrive "god kode", havde jeg nok ikke skrevet denne post.

Hvis jeg ændrer til din foreslåede DTD, så sker der to ting med min eksisterende side:
Scriptet virker ikke (som nævnt) - og kun en af mine tre iframes bliver vist.

Hvad foreslår du?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester