Toon posts:

iframe op flashmovie in IE niet zichtbaar

Pagina: 1
Acties:

  • Murphy
  • Registratie: november 2000
  • Laatst online: 23-09 21:19
Vraag niet waarom, maar op mijn schouders rust de verschrikkelijke taak een java-applet over een swf te leggen. Huilend en rillend ben ik aan deze klus begonnen -O-

De swf hangt in een html en is een soort schil die verschillende andere swfjes inlaadt, maar de vraag was of de schil ook java-applets in kon laden. Ik heb aangegeven dat java niet in flash zelf kon, maar dat door middel van een iframe de applet over de swf gelegd kon worden zodat het leek alsof de applet in de schil hing.

Ik heb in de basis-html, waar de schil-swf in hangt, de volgende elementen toegevoegd:

HTML:
1
2
3
4
5
6
7
<div id="topdiv">
    <div id="container">
<iframe scrolling="no" frameborder="0" id="iframe_FI" src ="assets/java/javaholder.htm" width="890" height="390" allowtransparency="true">
  <p>Your browser does not support iframes.</p>
</iframe>
</div>
</div>


met daaraan vast de volgende CSS:

Cascading Stylesheet:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
* {
    margin      :0;
    padding     :0;
}

html, body {
    height      :100%;
}

body {
    text-align  :center;
}
#topdiv {
    margin      :0 auto;
    margin-top  : 10px;
    position    : absolute;
    z-index     : 1000;
    background-color:transparent;
    top         : 140px;
    width       : 100%;
}
#container {
    margin      :0 auto;
    text-align  :center;
    width       :890px;
    clear       :left;
}


De swf hangt in de html dmv de standaard code:
HTML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
<script language="JavaScript" type="text/javascript">
<!--
// Version check for the Flash Player that has the ability to start Player Product Install (6.0r65)
var hasProductInstall = DetectFlashVer(6, 0, 65);

// Version check based upon the values defined in globals
var hasRequestedVersion = DetectFlashVer(requiredMajorVersion, requiredMinorVersion, requiredRevision);

if ( hasProductInstall && !hasRequestedVersion ) {
    // DO NOT MODIFY THE FOLLOWING FOUR LINES
    // Location visited after installation is complete if installation is required
    var MMPlayerType = (isIE == true) ? "ActiveX" : "PlugIn";
    var MMredirectURL = window.location;
    document.title = document.title.slice(0, 47) + " - Flash Player Installation";
    var MMdoctitle = document.title;

    AC_FL_RunContent(
        "src", "playerProductInstall",
        "FlashVars", "MMredirectURL="+MMredirectURL+'&MMplayerType='+MMPlayerType+'&MMdoctitle='+MMdoctitle+"",
        "width", "100%",
        "height", "100%",
        "align", "middle",
        "id", "schil",
        "quality", "high",
        "bgcolor", "#f2ebc7",
        "name", "schil",
        "allowScriptAccess","always",
        "wmode","opaque",
        "type", "application/x-shockwave-flash",
        "pluginspage", "http://www.adobe.com/go/getflashplayer"
    );
} else if (hasRequestedVersion) {
    // if we've detected an acceptable version
    // embed the Flash Content SWF when all tests are passed
    AC_FL_RunContent(
            "src", "scil",
            "width", "100%",
            "height", "100%",
            "align", "middle",
            "id", "schil",
            "quality", "high",
            "bgcolor", "#f2ebc7",
            "name", "schil",
            "allowScriptAccess","always",
            "wmode","opaque",
            "type", "application/x-shockwave-flash",
            "pluginspage", "http://www.adobe.com/go/getflashplayer"
    );
  } else {  // flash is too old or we can't detect the plugin
    var alternateContent = 'Alternate HTML content should be placed here. '
    + 'This content requires the Adobe Flash Player. '
    + '<a href=http://www.adobe.com/go/getflash/>Get Flash</a>';
    document.write(alternateContent);  // insert non-flash content
  }
// -->
</script>
<noscript>
    <object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
            id="schil" width="100%" height="100%"
            codebase="http://fpdownload.macromedia.com/get/flashplayer/current/swflash.cab" allowScriptAccess="always">
            <param name="movie" value="schil.swf" />
            <param name="quality" value="high" />
            <param name="bgcolor" value="#f2ebc7" />
            <param name="allowScriptAccess" value="sameDomain" />
            <param name="wmode" value="opaque" />
            <embed src="schil.swf" quality="high" bgcolor="#f2ebc7"
                width="100%" height="100%" name="schil" align="middle"
                play="true"
                loop="false"
                quality="high"
                allowScriptAccess="always"
                wmode="opaque"
                type="application/x-shockwave-flash"
                pluginspage="http://www.adobe.com/go/getflashplayer">
            </embed>
    </object>
</noscript>



Nu is het niet de bedoeling dat de java-applet direct zichtbaar is. Het iframe moet dus door de schil-swf aan en uit gezet kunnen worden. Dat doe ik door middel van externalInterface in AS3 mbv de volgende javascript-functies:

JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
function show_iframe(){ 
    var aaiFrame = document.getElementById('iframe_FI');
    aaiFrame.style.display = 'block';
    aaiFrame.height=390;    
}
function hide_iframe(){
    var aaiFrame = document.getElementById('iframe_FI');
    aaiFrame.visibility='hidden' 
    aaiFrame.height=0;
}
function change_iframe_src(url){
    var aaiFrame = document.getElementById('iframe_FI'); 
    aaiFrame.src = url
}


...waarbij ik hide_iframe() al aanspreek in de body.onload van de html omdat de applet pas later zichtbaar moet worden.

Probleem is: hoe lelijk de constructie ook is, alles werkt prima in FireFox en Chrome. Ook IE8 laat het iframe zien wanneer nodig maar IE7 weigert dienst. Omdat de doelgroep toch nog aardig fan is van IE7, moet het ook in deze browser werken.

[Voor 39% gewijzigd door Murphy op 04-11-2010 10:56. Reden: extra info]


  • Bosmonster
  • Registratie: juni 2001
  • Laatst online: 10-09 22:52

Bosmonster

*zucht*

Define "weigert dienst".

Ik mis ook de CSS en HTML van je iframe en Flash, wat het lastig maakt er iets van te maken :)

[Voor 67% gewijzigd door Bosmonster op 04-11-2010 10:49]


  • Murphy
  • Registratie: november 2000
  • Laatst online: 23-09 21:19
Bosmonster schreef op donderdag 04 november 2010 @ 10:47:
Define "weigert dienst".

Ik mis ook de CSS en HTML van je iframe en Flash, wat het lastig maakt er iets van te maken :)
Weigert dienst: op een gegeven moment moet n.a.v. een actie in de swf-schil de java-applet tevoorschijn komen - dus het iframe. In IE7 gebeurt er dan totaal niets, in IE8, FF en Chrome wel.

De html van de bron van het iframe bevat geen CSS. HTML zet ik hier niet neer ivm. klant. Doet er ook niet toe want ik heb het al eens geprobeerd met een heel simpel html'etje met een groene backgroundcolor, maar ook deze liet IE7 niet zien.

edit: oh ja, code van de swf toegevoegd @ TS.

[Voor 3% gewijzigd door Murphy op 04-11-2010 11:05]


  • Bosmonster
  • Registratie: juni 2001
  • Laatst online: 10-09 22:52

Bosmonster

*zucht*

Dus samengevat werkt het javascript wel, de css werkt, alleen werkt in IE7 de communicatie naar Javascript vanuit Flash niet?

* Bosmonster probeert in de richting te komen wat nu precies je probleem is

[Voor 26% gewijzigd door Bosmonster op 04-11-2010 11:18]


  • Janoz
  • Registratie: oktober 2000
  • Laatst online: 23:40

Janoz

Moderator Devschuur®

!litemod

Zou het ook zo kunnen zijn dat alles gewoon keurig werkt, maar dat de SWF in IE7 always on top is waardoor het onmogelijk is om de iframe over de swf heen te krijgen? Op zich is dat makkelijk te testen door het iframe een stukje op te schuiven zodat het slechts gedeeltelijk over de SWF valt. Je kunt dan valideren of hij uberhaupt niet zichtbaar wordt, of dat hij achter de SWF blijft zitten.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • Flowmo
  • Registratie: november 2002
  • Laatst online: 24-09 15:28

Flowmo

iframe is my middle name

Ik geloof dat dit ook gewoon een z-index issue kan zijn van ie7. Probeer eens op de div die tevoorschijn moet komen en op alle parent divs daarvan een z-index te geven die hoger is dan de z-index van de flash layer. Bv flash layer is 900, z-index van de java-applet wordt dan 1000.

Kan je trouwens de javascript functie die je aanroept via flash geen alert("het werkt") tevoorschijn laten komen? Dan kan je testen of je javascript wel draait als je in flash op die knop klikt.

@ hierboven: Wmode = opaque zorgt ervoor dan het flash element wel interactie heeft met de html lagen. Als ie wmode = window zou zijn, dan is ie inderdaad always-on-top. met wmode=opaque kan je z-index meegeven aan het flash element en het daarmee onder of boven een element kan plaatsen.

[Voor 23% gewijzigd door Flowmo op 04-11-2010 11:39]


  • Bosmonster
  • Registratie: juni 2001
  • Laatst online: 10-09 22:52

Bosmonster

*zucht*

M.a.w. we weten niet wat het probleem is, dus naar oplossingen blijft het gissen.

Is het een CSS, Javascript of Flash probleem? Zoek dat eerst even uit :)

  • Murphy
  • Registratie: november 2000
  • Laatst online: 23-09 21:19
Een alert in de javascript-functie werkt gewoon. De javascript functie wordt dus wel aangesproken.

@Bosmonster: nee ik weet ook niet wat het probleem is, daarom deze post :+ ;)
Flashprobleem of javascriptprobleem is wat mij betreft uitgesloten, flash roept de js functie aan dus daar zit de fout niet.

Een verschil is er wel: als ik Alert('show_iframe() aangesproken voor '+aaiFrame) in de functie show_iframe zet, krijg ik in FireFox:
show_iframe() aangesproken voor [object HTMLIFrameElement]

en in IE7:
show_iframe() aangesproken voor [object]

Dus volgens mij gaat het al fout bij document.getElementById('iframe_FI'); :?

  • Bosmonster
  • Registratie: juni 2001
  • Laatst online: 10-09 22:52

Bosmonster

*zucht*

IE noemt gewoon alles object.
@Bosmonster: nee ik weet ook niet wat het probleem is, daarom deze post
Maar dat kun je toch eerst zelf eenvoudig even debuggen ipv mensen hier maar laten gissen?

Maar goed, je zegt zelf dat het blijkbaar een CSS probleem is, dus wat gebeurt er als je het iframe even niet over de flash heenlegt? Of half? Wat als je de flash op wmode:transparent zet ipv opaque? Wat is de CSS van je Flash en Iframe, zoals ik eerder al vroeg? Als je 'weet' dat het een CSS probleem is, is het ook wel handig als je de CSS post :+

[Voor 15% gewijzigd door Bosmonster op 04-11-2010 13:55]


  • Murphy
  • Registratie: november 2000
  • Laatst online: 23-09 21:19
*opgelost*.

Ik heb niet gezegd dat het een CSS-probleem was, ik heb alleen maar het andere uitgesloten :+
Trouwens: de CSS staat gewoon in de startpost.

Ik heb de hele flash-code, <script> en <noscript>, in een <div> gezet. Deze div heb ik z-index 900 gegeven. Et voila, IE7 vrat 'm.

  • Flowmo
  • Registratie: november 2002
  • Laatst online: 24-09 15:28

Flowmo

iframe is my middle name

Murphy schreef op donderdag 04 november 2010 @ 15:43:
*opgelost*.

Ik heb niet gezegd dat het een CSS-probleem was, ik heb alleen maar het andere uitgesloten :+
Trouwens: de CSS staat gewoon in de startpost.

Ik heb de hele flash-code, <script> en <noscript>, in een <div> gezet. Deze div heb ik z-index 900 gegeven. Et voila, IE7 vrat 'm.
Dacht ik al, is dus blijkbaar de ie7 z-index bug. Bekend probleem.

  • Murphy
  • Registratie: november 2000
  • Laatst online: 23-09 21:19
Flowmo schreef op vrijdag 05 november 2010 @ 10:29:
[...]

Dacht ik al, is dus blijkbaar de ie7 z-index bug. Bekend probleem.
IE7 is een hele goede browser om firefox te downloaden

Thanks y'all :w
Pagina: 1


Nintendo Switch (OLED model) Apple iPhone 13 LG G1 Google Pixel 6 Call of Duty: Vanguard Samsung Galaxy S21 5G Apple iPad Pro (2021) 11" Wi-Fi, 8GB ram Nintendo Switch Lite

Tweakers vormt samen met Hardware Info, AutoTrack, Gaspedaal.nl, Nationale Vacaturebank, Intermediair en Independer DPG Online Services B.V.
Alle rechten voorbehouden © 1998 - 2021 Hosting door True

Tweakers maakt gebruik van cookies

Bij het bezoeken van het forum plaatst Tweakers alleen functionele en analytische cookies voor optimalisatie en analyse om de website-ervaring te verbeteren. Op het forum worden geen trackingcookies geplaatst. Voor het bekijken van video's en grafieken van derden vragen we je toestemming, we gebruiken daarvoor externe tooling die mogelijk cookies kunnen plaatsen.

Meer informatie vind je in ons cookiebeleid.

Sluiten

Forum cookie-instellingen

Bekijk de onderstaande instellingen en maak je keuze. Meer informatie vind je in ons cookiebeleid.

Functionele en analytische cookies

Deze cookies helpen de website zijn functies uit te voeren en zijn verplicht. Meer details

janee

    Cookies van derden

    Deze cookies kunnen geplaatst worden door derde partijen via ingesloten content en om de gebruikerservaring van de website te verbeteren. Meer details

    janee