2016-04-21 13 views
0

Ich muss eine Größenanpassung meines Browserfensters erzwingen, aufgrund eines Versprechens, das IScroll auf einem sehr weiten Element unterbricht (das Problem ist, dass ich ein Versprechen verwende, das zu ändern Breite, wenn Versprechen erfolgreich ist). IScroll lädt, bevor das Versprechen abgeschlossen ist, und ruft das mit dem ursprünglichen Element ab. Das Ergebnis ist, dass ich nur so weit wie die ursprüngliche Elementbreite scrollen kann, nicht die neue Breite des breiteren Elementes, das vom Versprechen geladen wird. Wenn ich die Größe des Browserfensters manuell ändere, kann ich die gesamte Größe scrollen.window.dispatchEvent funktioniert nicht in Firefox, Safari oder IE

Ich reparierte dies, indem ich IScrolls maxScrollX und scrollerWidth änderte, nachdem das Versprechen geladen wurde, aber ich benutze auch einen Indikator, der nicht den ganzen Weg scrollt.

Ich versuche, dies mit window.dispatchEvent(new Event('resize')); zu beheben, um eine Größenänderung des Fensters zu erzwingen. Mein Problem ist, dass dies in Chrome funktioniert, aber die Scroll in Firefox, Safari und IE bricht. Gibt es eine andere Möglichkeit, eine Fenstergröße zu erzwingen, die mit allen Browsern kompatibel ist?

Ich habe versucht, die folgenden Browser, die nicht funktioniert:

  • Safari 5.1.4 (734.54.16)
  • Firefox 45.0.2
  • Rand 25.10586.0.0
+0

'window.resizeTo (Breite, er igight) 'wird die Größe des Fensters ändern –

+0

@EaswarRaju' console.log (window.innerHeight); window.resizeTo (500, 500); console.log (window.innerHeight); 'hat in beiden console.logs den gleichen Wert in chrome angegeben. Obwohl die Breite vorher nicht annähernd 500 war. – BluePrint

Antwort

0

Ich fand endlich die Antwort selbst:

$timeout(function() { 
    var evt = $window.document.createEvent('UIEvents'); 
    evt.initUIEvent('resize', true, false, $window, 0); 
    $window.dispatchEvent(evt); 
});