2

問題調整大小的Flash在IE8是越野車

調整時,在IE Flash對象,它的調整處理不當認爲只有舞臺寬度已經更新。

步驟再現您滾動和點擊的Flash 按鈕

  • 的按鈕可以使一個 ExternalInterface調用,JS錯誤

    1. 。 JS 調整Flash等。
    2. 在 所有非IE瀏覽器,閃存是 通知的尺寸變化和 完美地執行其調整大小處理程序。 在IE8, 調整大小處理程序被調用,但是 只有其階段寬度已更新。它仍然認爲它的高度是一樣的。
    3. 爲了最終讓IE8的Flash確認其真實高度,請將鼠標移出SWF。

    的Actionscript

    package { 
    import flash.external.*; 
    public class Player { 
        public function Player(container:Stage) { 
        this.container.addEventListener(Event.RESIZE, this.onResize); 
        } 
        public function expand():void { 
        ExternalInterface.call('expand'); 
        } 
        public function onResize():void { 
        // float chrome buttons to the right 
        // float chrome to the bottom 
        } 
    } 
    } 
    

    的Javascript

    // Using Prototype framework 
    function expand() { 
    $('flash').setStyle({ 
        width: '500px', 
        height: '400px' 
    }); 
    // do other stuff in JS too 
    } 
    

    監聽器被觸發,除了Internet Explorer中的所有瀏覽器的罰款。 Javascript沒有問題 - 我看到Flash被調整大小。但是,在我的鼠標移出SWF之前,Actionscript偵聽器不會被觸發。我需要了解IE的渲染引擎來解決這個問題?

    以前

    before

    後 - IE的Flash通知寬度的變化,但仍然認爲它是高度是一樣的。

    alt text

    移動鼠標了SWF的 - 你必須把鼠標出的SWF爲Flash承認其真實身高在IE8

    alt text

  • 回答

    0

    我通過設置Flash的高度,第二次解決了這個。即使它設置爲相同的高度,它也會誘使IE重新繪製頁面。

    0

    不知道這是爲什麼,但我會建議(或強烈建議)在閃存上添加一個回調函數,並從JavaScript中觸發它來強制執行該調用。

    考慮ExternalInterface.addCallback

    我可以去了解如何得到的那部分(JS < - >閃存江西通信)工作,但其他人已經這樣做了。

    http://www.viget.com/inspire/bi-directional-actionscript-javascript-communication/

    +0

    我試圖使用ExternalInterface來顯式調用Flash的調整大小處理程序後Javascript正在調整大小,但它仍然在IE中損壞。看起來好像IE的DOM操作不同步。也就是說,如果我在DOM更改後立即調用ExternalInterface,則不會在DOM更改之後調用ExternalInterface調用*。 – JoJo 2011-01-21 18:28:36

    0

    我有類似的問題。我使用CSS將swf放在一個塊中,並使用overflow:hidden;來隱藏我的參數之外的任何內容。在ie8中工作容易。