[NON FF Browsers] scrollbars verbergen

Pagina: 1
Acties:

  • SYPHAX
  • Registratie: December 2000
  • Laatst online: 15-09 20:00
Hallo,

Ik zit met het volgende probleem waar ik eigenlijk geen goede oplossing voor kan vinden. Het gaat met name om NON FF browsers als IE / Chrome en Opera.

Afbeeldingslocatie: http://www.covide.nl/cmsfile/1638

Bij geneste iframes probeer ik de scrollbars van alle achterliggende iframes te verbergen, behalve die van de active. Dit werkt in Firefox helemaal correct, maar in de eerder genoemde andere browsers krijg ik deze niet weg.

Om dit effect te Firefox te bereiken gebruik ik de onderstaande regel javascript:

code:
1
parent.document.getElementById('frmTest'+getOverlays()).scrolling = 'no';


getOverlays() is het volgnummer van de iframes.

Heeft iemand hier misschien een idee waar dit misgaat?

  • JayVee
  • Registratie: Mei 2002
  • Laatst online: 31-08 10:22

JayVee

shibby++!

Heb je een werkende voorbeeld pagina?

Ik zou dit niet dmv javascript maar CSS oplossen: overflow: hidden

ASCII stupid question, get a stupid ANSI!


  • mocean
  • Registratie: November 2000
  • Laatst online: 04-09 10:34
Ik vraag me eigenlijk meer af waarom je 6 i-frames wil nesten. Is dat niet een beetje overdreven/overbodig, danwel op een andere manier op te lossen?

Koop of verkoop je webshop: ecquisition.com


  • lammert
  • Registratie: Maart 2004
  • Laatst online: 03-09 11:50
JayVee schreef op woensdag 23 september 2009 @ 16:01:

Ik zou dit niet dmv javascript maar CSS oplossen: overflow: hidden
Helemaal mee eens, totaal onnodig om js te gebruiken

  • rjvbeek
  • Registratie: September 2009
  • Laatst online: 16-09 11:23
Ik werk ook mee aan het project... En het probleem is dat alleen de actieve iframe maar scrollbars moet hebben, en de rest niet! Dus gewoon even css volstaat niet. We hebben ook bewust gekozen voor IFrames etc., dus oplossingen werken denk ik beter dan "ik zou"...

In ieder geval, wij proberen dus bij het openen van een nieuwe iframe de scrollbars van de vorige te verbergen, etc. (dit werkt natuurlijk ook vice versa; als een iframe wordt afgesloten moeten de scrollbars weer getoond worden)

dankjewel voor de feedback alvast!

  • Caelorum
  • Registratie: April 2005
  • Laatst online: 15:30
met javascript de style veranderen van de andere iframes?

dus iets als:
code:
1
parent.document.getElementById('frmTest'+getOverlays()).style.overflow = 'hidden';

gebruiken

[ Voor 52% gewijzigd door Caelorum op 23-09-2009 18:33 ]


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 17-09 14:05

.oisyn

Moderator Devschuur®

Demotivational Speaker

rjvbeek schreef op woensdag 23 september 2009 @ 17:03:
dus oplossingen werken denk ik beter dan "ik zou"...
Ik zou... eens verder kijken dan je neus lang is en bedenken dat je met javascript ook css style aan kunt passen, ipv meteen een mogelijke oplossing de grond in te boren.

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • SYPHAX
  • Registratie: December 2000
  • Laatst online: 15-09 20:00
Bedankt voor jullie reacties :)

Dat je met javascript css kunt manipuleren is ons bekend. Het probleem waar we tegenaan lopen is dat we het alleen onder Firefox goed aan de praat krijgen. In alle andere browsers heeft de gebruikte code niet het gewenste effect, dat wil zeggen, het werkt helemaal niet. Terwijl de gebruikte code technisch gezien toch wel zou moeten werken. Toch??

Helaas zitten we vast aan het gebruik van iframes. Het zou inderdaad mooi zijn als we dit los zouden kunnen laten, maar dat gaat nu eenmaal niet.

Of hebben jullie mogelijk andere ideeen? Het bovengenoemde voorbeeld is een extreme, dat wil zeggen, in 99% van de gevallen zijn de overlays maximaal 3 niveaus diep. Het idee achter deze constructie is het aantal 'normale' popups minimaliseren en alles in één window te houden.

Ik hou mee aanbevolen voor suggesties...

  • rjvbeek
  • Registratie: September 2009
  • Laatst online: 16-09 11:23
De overflow = hidden werkt helaas niet op iframes... zou er een manier zijn om de body uit het iframe te halen?
code:
1
parent.document.getElementById('frmTest'+getOverlays()).body.......

werkte niet. Als we bij de body konden, konden we daar de overflow veranderen en misschien de hoogte op 99% ofzo zetten.

  • EnsconcE
  • Registratie: Oktober 2001
  • Laatst online: 19-06 00:07
SYPHAX schreef op woensdag 23 september 2009 @ 21:43:
...
Dat je met javascript css kunt manipuleren is ons bekend. Het probleem waar we tegenaan lopen is dat we het alleen onder Firefox goed aan de praat krijgen. In alle andere browsers heeft de gebruikte code niet het gewenste effect, dat wil zeggen, het werkt helemaal niet. Terwijl de gebruikte code technisch gezien toch wel zou moeten werken. Toch??
...
Welke gebruikte code heb je het over?

  • rjvbeek
  • Registratie: September 2009
  • Laatst online: 16-09 11:23
code:
1
parent.document.getElementById('frmTest'+getOverlays()).scrolling = 'no';

Volgens google moet scrolling="no" de scrollbars uitschakelen ;)

  • HuHu
  • Registratie: Maart 2005
  • Niet online
Google is geen bron van informatie hè, Google verwijst slechts naar andere sites. Volgens de W3schools zou het scrolling-attribuut inderdaad moeten werken: http://www.w3schools.com/TAGS/att_iframe_scrolling.asp

  • HuHu
  • Registratie: Maart 2005
  • Niet online
Ow... ik denk trouwens dat het ook niet ligt aan die scrolling='no', maar aan je parent.document. Ik vermoed dat alleen Firefox die notatie ondersteund en andere browsers die parent.document aanroep weigeren. Als je een beetje gaat debuggen om te zien of parent.document überhaupt wel wat doet, dan kom je daar snel genoeg achter.

  • Stigandr
  • Registratie: September 2006
  • Laatst online: 15:03
Volgens mij moet je voor iframes .contentDocument gebruikern ipv .document: http://www.w3schools.com/...frame_contentDocument.asp

  • SYPHAX
  • Registratie: December 2000
  • Laatst online: 15-09 20:00
.contentDocument werkt helaas niet. We kunnen de individuele iframes wel benaderen, maar de .contentDocument geeft altijd NULL terug.

  • gertvdijk
  • Registratie: November 2003
  • Laatst online: 11:40
Andere browsers dan Firefox hebben ook debugtools. Wat is het probleem van de functieaanroep in die browsers die wel werkt in Firefox?

Kia e-Niro 2021 64 kWh DynamicPlusLine. See my GitHub and my blog for articles on security and other stuff.


  • rjvbeek
  • Registratie: September 2009
  • Laatst online: 16-09 11:23
We krijgen geen errors... Maar, bij wijze van test heb ik de volgende code toegevoegd?
code:
1
2
3
4
var obj = parent.document.getElementById('frmTest'+getOverlays());
alert(obj);
alert(obj.id);
alert(obj.childNodes.length);

met als resultaat:
[HTMLIFrameObject]
frmTest1
0

Terwijl de IFrame toch niet leeg is...

  • Yoozer
  • Registratie: Februari 2001
  • Laatst online: 03-08 17:53

Yoozer

minimoog

In plaats van zelf met Javascript-rommel aan de gang te gaan; gebruik Mootools of jQuery. Zit je in ieder geval met de garantie dat het aanroepen van dingetjes met IDs in bepaalde browsers werkt, en kijken of een ID daar is is zo makkelijk als

JavaScript:
1
2
3
4
5
6
var myElement = $('myElementId');
if(myElement)
{
  myElement.hide();
 // wat je dan nog allemaal wil.
}


Verder: "we hebben bewust gekozen voor iframes". Ja, 't is vervelend als je terugmoet naar de plaats waar je begonnen bent. Het is nog vervelender als je al hopeloos verdwaald bent en stug in de verkeerde richting blijft lopen.

Wat was het effect dat je wilde bereiken?

Dit?

Afbeeldingslocatie: http://www.theheartcore.com/images/tnet/yodawg.jpg

edit: ik kijk nu nogmaals naar het screenshot. Het enige wat ik kan verzinnen is dat jullie oorspronkelijk software voor de desktop hebben gebouwd in VB of Java of zo en het heel normaal vinden dat je nieuwe venstertjes opent op het moment dat je nieuwe acties uitvoert, en ze weer sluit als je klaar bent.

Lees http://billwscott.com/sha...hift/ShiftFromThePage.pdf eens door, wellicht dat dat je nieuwe ideetjes geeft voor een user interface.

[ Voor 55% gewijzigd door Yoozer op 24-09-2009 16:40 ]

teveel zooi, te weinig tijd


  • MueR
  • Registratie: Januari 2004
  • Laatst online: 10:22

MueR

Admin Tweakers Discord

is niet lief

SYPHAX schreef op woensdag 23 september 2009 @ 21:43:
Helaas zitten we vast aan het gebruik van iframes. Het zou inderdaad mooi zijn als we dit los zouden kunnen laten, maar dat gaat nu eenmaal niet.
Waarom niet? Omdat je eerder een verkeerde ontwerpkeuze hebt gemaakt? Websites != desktop applicaties. Nieuwe dialogs moet je niet zomaar gaan openen. Je hebt gewoon een fundamentele fout in je applicatie ontwerp zitten, en nu kom je daar de gevolgen van tegen.

Om maar even een vergelijking te trekken met het bouwen van een huis:
Een huis heeft een aantal ontwerp-elementen nodig. Een aannemer die weet wat hij doet laat een fundering leggen van een materiaal wat het gewicht van de constructie kan dragen. Vervolgens zet hij er muren in die bovenliggende lagen kunnen ondersteunen. Daar is goed over nagedacht, meestal gebruikt met daarvoor materialen als beton. Dat werkt namelijk.
Nu komen jullie om de hoek en zeggen "maar eierdozen zijn goedkoper als fundering, karton maakt ook prima muren". Helaas, de muren beginnen nu om te vallen en de fundering zakt in elkaar. Je bent geen goede architect.

In short: Ga eens gewoon gebruik maken van verschillende paginas, in plaats van een handvol genestte iframes. Nu kan je wel zeggen "daar zitten we aan vast" of "ik zou het op $manier doen hebben we niks aan". Nou sorry, excuseer ons dat wij de illusie hebben dat we bad practice bij de naam mogen noemen. Als je dat niet wilt, moet je niet op een forum als dit komen, waar mensen met enige kennis zitten. Die vallen namelijk achterover van de stupiditeit van dit ontwerp.

Anyone who gets in between me and my morning coffee should be insecure.


  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Dat is wel héééééééééél sterk :X

Afbeeldingslocatie: http://tweakers.net/ext/f/P57isuN4f0bTBG8w7cPu23kv/full.jpg

Als je dan ook nog bedenkt dat we hetzelfde heten én dat ik niet héél ver van Panningen ben opgegroeid....
Helaasch kreeg ik een telefoontje tussendoor waardoor ik wat later moest posten. Ben jij me voor :(
OMG :D GMTA.

(Die van jou is overigens beter ;) )

Anyhow; ontopic: ik zie ook niet waarom er persé een "droste"-iframe gebruikt moet worden. En ik sluit me dan ook aan bij Yoozer en MueR

[ Voor 48% gewijzigd door RobIII op 24-09-2009 16:58 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • jbdeiman
  • Registratie: September 2008
  • Laatst online: 07:08
@SYPHAX
Is lightbox, fancybox of een variant daarop niet wat voor je? Je kan zo:
a) van de frames afstappen
b) toch een soort pop-upjes gebruiken

@Allen
Het idee van de "pop-upjes" is niet zo slecht op zich, en kan (afhankelijk van het doel) wel prettig zijn. Echter het gebeuren met Frames oplossen is wel de meest vreemde manier die ik me kan bedenken. (maar dat zal aan mij liggen)
Waarom is het "pop-upjes" idee niet zo slecht? Omdat mensen zijn gewend zo te werken, waarom zal je daar heel veel aan veranderen?

  • rjvbeek
  • Registratie: September 2009
  • Laatst online: 16-09 11:23
...omdat onze (vele) klanten onze manier van werken erg aanspreekt, omdat wij niet diep genoeg in de applicatie zitten om dit helemaal om te gooien, en omdat wij in 2010 toch gaan restylen.

Wij willen gewoon graag het huidige probleempje oplossen zonder al te veel gedoe. Het gaat niet om of het mooi is in dit geval, maar of het werkt.
dankjewel.

  • rjvbeek
  • Registratie: September 2009
  • Laatst online: 16-09 11:23
bedankt voor de feedback. Daar kunnen we in ieder geval een kijkje naar nemen.

  • Yoozer
  • Registratie: Februari 2001
  • Laatst online: 03-08 17:53

Yoozer

minimoog

RobIII schreef op donderdag 24 september 2009 @ 16:52:
Dat is wel héééééééééél sterk :X
Ik keek toevallig even mee op NMe's scherm en vond het schandalig dat je die van jezelf nog niet had gepost, maar ik zie nu dat je een goed excuus had :D.
jbdeiman schreef op donderdag 24 september 2009 @ 16:59:
@Allen
Het idee van de "pop-upjes" is niet zo slecht op zich, en kan (afhankelijk van het doel) wel prettig zijn.
[...]
Waarom is het "pop-upjes" idee niet zo slecht? Omdat mensen zijn gewend zo te werken, waarom zal je daar heel veel aan veranderen?
Waarom is het wel slecht?

Zo werkt het internet niet. Het internet is stateless. Wat volgt hier uit?

- de browser is de applicatie. Je fake pop-up kan niet eens uit het venster, tenzij het echt een apart venstertje is.
- venstertjes en posities managen is iets voor het OS, niet voor de browser
- je webpagina heeft er absoluut geen idee van hoeveel vensters er nog open staan
- absolute blokkering van achtergrond-dingen is niet mogelijk; dan kun je net zo goed gelijk naar een andere pagina navigeren

en het belangrijkste:

- mensen haten popups. Browsers hebben pop-up blockers. Zelfs bij een intranet-applicatie ga je gebruikers kwaad maken als ze nodeloos nieuwe vensters moeten openen.
- het is niet nodig, omdat je in die applicatie toch niet aan het multitasken bent; als je die tab actief hebt ben je puur en alleen met dat ene ding bezig.

Niemand kijkt er raar van op dat Gmail geen nieuw venster opent als je een nieuwe mail wil tikken. Waarom zou het ook - je bent toch bezig met het schrijven van een mail, niet met iets anders?

Niemand kijkt er raar van op als een forum naar een nieuwe pagina gaat om een post te maken.Lezen van threads en posten van replies zijn twee fundamenteel verschillende activiteiten. Youtube laat je toe om direct in een thread commentaar te leveren; bij forums bestaat dat ook en heet dat Quick Reply, en da's voornamelijk omdat je dan niet een gecachede versie van de thread hoeft op te halen en mensen moderne browsers hebben die dat soort geintjes kunnen doen.

Dat is waar mensen aan gewend zijn; niet aan 20 venstertjes, en zeker niet venstertjes in venstertjes.
En dan moet je zo'n vragen als deze stellen?
Wij willen gewoon graag het huidige probleempje oplossen zonder al te veel gedoe. Het gaat niet om of het mooi is in dit geval, maar of het werkt.
Dit is een fundamentele ontwerpfout en god sta je bij als het op meerdere plaatsen in de applicatie voorkomt.

[ Voor 9% gewijzigd door Yoozer op 24-09-2009 17:16 ]

teveel zooi, te weinig tijd


Verwijderd

Het gaat niet om of het mooi is in dit geval, maar of het werkt.
Alleen: het werkt niet. Ik sluit me aan bij al het zinnige dat hiervoor al geschreven is. Als je volgend jaar toch gaat restylen enzo, zou ik het lekker laten zitten voor wat het is met die srcollbars.

  • MueR
  • Registratie: Januari 2004
  • Laatst online: 10:22

MueR

Admin Tweakers Discord

is niet lief

rjvbeek schreef op donderdag 24 september 2009 @ 17:12:
...omdat onze (vele) klanten onze manier van werken erg aanspreekt, omdat wij niet diep genoeg in de applicatie zitten om dit helemaal om te gooien, en omdat wij in 2010 toch gaan restylen.
En dat maakt het good practice? Als ik honderd huizen bouw uit karton en er zijn mensen dom genoeg om ze te kopen, hoeven aannemers ineens geen beton meer te gebruiken? Dat restylen wat je noemt gaat het ook niet redden.
rjvbeek schreef op donderdag 24 september 2009 @ 17:12:
Wij willen gewoon graag het huidige probleempje oplossen zonder al te veel gedoe.
Je huidige probleempje is een fundamentele ontwerpfout. Dat melden wij. Ook met "restylen" krijg je dat niet gerepareerd. Je zal gewoon vanaf nul moeten beginnen. Zie ook Yoozer. Je bent met hand en tand een applicatie aan het verdedigen, waarvan vele ervaren programmeurs zeggen dat het ding niet te redden is. Misschien moet je daar eens over nadenken.

[ Voor 8% gewijzigd door MueR op 24-09-2009 18:54 ]

Anyone who gets in between me and my morning coffee should be insecure.


Verwijderd

Ik kan alleen maar beamen wat de mede-tweakers hier schrijven. Ook wij hebben met onze website die enorme stap moeten zetten en vanaf 0 terug alles programmeren. Onze website was ontstaan in een hobby periode waar we nog aan het prutsen waren met print("hello world"); 3 Jaar laten hadden we zo'n onoverzichtelijke codebase maar er waren wel meer dan 100.000 gebruikers die een profiel op onze website hadden. Omdat innovatie & usability steeds complexer werd waren er weinig opties buiten vanaf nul terug beginnen. Ik begrijp dan ook heel goed dat jullie op je huidige model willen blijven verder werken maar vroeg of laat ga je toch die stap moeten nemen ...

Zelfs grote ontwikkelaars zijn de laatste jaren vaak terug (bijna) vanaf nul begonnen ... zie maar naar MacOS X & het oude Mac OS ...

Acties:
  • 0 Henk 'm!

Verwijderd

Ik kan alleen maar de heren hier boven gelijk geven; dit is niks waard! Elke minuut die je er nog in steekt, is er één te veel. :) Vanaf nul beginnen is hier echt dé oplossing. Je kan wel de scrollbars weg halen, maar dat zou slechts een (veel te kleine) pleister op de wond zijn. :P

offtopic:
krijg spontaan uitslag hiervan... :/

  • Duroth
  • Registratie: Juni 2007
  • Laatst online: 27-04-2016

Duroth

No rest for the tweaked

Met de mensen boven mij.
Hoewel, ik ben het er niet helemaal mee eens dat je huidige ontwerp nutteloos is.
Bij theDailyWTF zullen ze er erg blij mee zijn.


Waar je overigens wel rekening mee moet houden is dat mensen je hier graag willen helpen. Dit houdt echter niet in dat je zomaar een vraagje kan dumpen dat wel eventjes beantwoord wordt; soms is je werkelijke probleem juist niet wat je in je topic omschrijft, maar ligt het, zoals in dit geval, wat dieper.

Dus, tenzij je 100% zeker weet dat jij je applicatie nooit hoeft te gaan onderhouden ( >:) ), zou ik je plannen laten schieten, je code deleten/archiveren, en teruglopen naar je tekentafel. Een klein legertje aan ervaren programmeurs adviseert je precies dat, en jij zegt botweg geen "ik zou..." antwoorden te willen? Schaam je ;)

Overigens geeft je debug stukje overduidelijk aan dat je code enkel naar het IFRAME element verwijst. De HTML tag zelf dus. Op dat element zet je dus een scrolling=no attribuut. Maar het zetten van zo'n attribuut zal je weinig goed doen als de pagina niet opnieuw gerenderd wordt, zonder scrollbars. Volledig ongetest natuurlijk, maar als je deze Freak of Nature echt niet wilt euthanaseren, heb je al geprobeerd je iframe content na het zetten van de tag opnieuw te laden? Of beter nog, zet wat CSS-attributen op de iframe pagina, niet op het 'domme' <Iframe> element.
Pagina: 1