Hallo GoTters,
Ik weet niet precies of dit topic in PW of WG thuishoort; de kern is HTML/CSS/Javascript maar het gaat om het programmeren in de context van een applicatie (Internet Explorer), dus daarom zou het meer een programmeervraag kunnen zijn. Ik begin maar in WG en laat het verder aan de oneindige wijsheid van de modjes over
.
Intro
Om even te summariseren voor mensen die niet weten waar ik het over ga hebben: het is mogelijk om het contextmenu ("rechtsklikmenu") van Internet Explorer uit te breiden met eigen opties. Door hierop te klikken kun je Internet Explorer een custom script (ge-embed in een HTML pagina) uit laten voeren.
Voorbeeld:
Maak maar eens de volgende HTML pagina aan:
En voeg de volgende registry entry toe:
Als je Explorer restart dan krijg je als je rechts-klikt een menuoptie erbij die het script lanceert (en dus een alert toont).
Allemaal nuttig, want je kan hier doen wat je wil, en je kan de pagina en het object waarvandaan het aangeroepen is opvragen etc. Tot zover, geen probleem.
Wat ik heb
Ik heb deze feature gebruikt om een script te schrijven dat alle <EMBED> objects in een webpagina laat zien. Dit omdat media player embedding in mijn IE niet meer goed werkt, en ik niet weet hoe ik het moet maken. Dus werken we eromheen
. Ook lijkt dit script me nog best nuttig ook al zou embedding wel werken, want dan kun je een embedded bestand downloaden zonder in de source te hoeven duiken.
Het volgende script doet wat ik wil:
Wat ik wil
Dit is allemaal mooi en aardig, behalve dan dat het niet mooi is. Het probleem is namelijk dat ik niet weet hoe ik deze uitvoer moet stylen (op een beetje een relaxte manier, that is). Waarom voeg ik niet gewoon <style> tags toe? Omdat het venster wat uiteindelijk verschijnt, niet deze pagina als source bevat. Het pop-up window wordt namelijk zonder locatie gemaakt en via scriptcode gevuld.
Ik heb wel geprobeerd een <style> sectie in dit document te zetten en die via DOM manipulatie te kopiëren naar het andere document, maar daarbij kreeg ik allemaal fouten; blijkbaar kon dit niet. Als laatste oplossing die waarschijnlijk wel zou werken zou ik een <style> sectie volledig kunnen w.document.write'en(), maar dat is zo lelijk dat ik er eigenlijk liever niet over na wil denken. Er moet toch een betere oplossing zijn...
Mijn vraag is dus: is er iemand die ervaring heeft met het op deze manier maken van uitbreidingen voor Internet Explorer, of heeft iemand een idee of ervaring met het stylen van volledig dynamisch gegenereerde pop-up vensters?
Ik weet niet precies of dit topic in PW of WG thuishoort; de kern is HTML/CSS/Javascript maar het gaat om het programmeren in de context van een applicatie (Internet Explorer), dus daarom zou het meer een programmeervraag kunnen zijn. Ik begin maar in WG en laat het verder aan de oneindige wijsheid van de modjes over
Intro
Om even te summariseren voor mensen die niet weten waar ik het over ga hebben: het is mogelijk om het contextmenu ("rechtsklikmenu") van Internet Explorer uit te breiden met eigen opties. Door hierop te klikken kun je Internet Explorer een custom script (ge-embed in een HTML pagina) uit laten voeren.
Voorbeeld:
Maak maar eens de volgende HTML pagina aan:
HTML:
1
2
3
| <script> alert("Oy wereld"); </script> |
En voeg de volgende registry entry toe:
code:
1
2
3
| HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\MenuExt\Test\ @="c:\pad\naar\pagina.html" Contexts=(DWORD)1 |
Als je Explorer restart dan krijg je als je rechts-klikt een menuoptie erbij die het script lanceert (en dus een alert toont).
Allemaal nuttig, want je kan hier doen wat je wil, en je kan de pagina en het object waarvandaan het aangeroepen is opvragen etc. Tot zover, geen probleem.
Wat ik heb
Ik heb deze feature gebruikt om een script te schrijven dat alle <EMBED> objects in een webpagina laat zien. Dit omdat media player embedding in mijn IE niet meer goed werkt, en ik niet weet hoe ik het moet maken. Dus werken we eromheen
Het volgende script doet wat ik wil:
HTML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
| <script> var w = window.open("about:blank", "embedwindow", "scrollbars,resizable"); var embeds = external.menuArguments.document.getElementsByTagName("EMBED"); w.document.write("<base href='" + external.menuArguments.location + "'>"); w.document.write("<table>"); for (i = 0; i < embeds.length; i++) { var src = embeds[i].src; w.document.write("<tr><td><a href='" + src + "'>" + src + "</a></td></tr>"); } w.document.write("</table>"); w.document.write("<br><br><a href='javascript:window.close();'>Close</a>"); </script> |
Wat ik wil
Dit is allemaal mooi en aardig, behalve dan dat het niet mooi is. Het probleem is namelijk dat ik niet weet hoe ik deze uitvoer moet stylen (op een beetje een relaxte manier, that is). Waarom voeg ik niet gewoon <style> tags toe? Omdat het venster wat uiteindelijk verschijnt, niet deze pagina als source bevat. Het pop-up window wordt namelijk zonder locatie gemaakt en via scriptcode gevuld.
Ik heb wel geprobeerd een <style> sectie in dit document te zetten en die via DOM manipulatie te kopiëren naar het andere document, maar daarbij kreeg ik allemaal fouten; blijkbaar kon dit niet. Als laatste oplossing die waarschijnlijk wel zou werken zou ik een <style> sectie volledig kunnen w.document.write'en(), maar dat is zo lelijk dat ik er eigenlijk liever niet over na wil denken. Er moet toch een betere oplossing zijn...
Mijn vraag is dus: is er iemand die ervaring heeft met het op deze manier maken van uitbreidingen voor Internet Explorer, of heeft iemand een idee of ervaring met het stylen van volledig dynamisch gegenereerde pop-up vensters?