innerHTML 與 ExternalInterface.addCallback 失效 (ie 6)
犯了不易察覺的錯誤:
使用 innerHTML
動態產生 flash 物件(object / embed)然後插入頁面,影片裡用 ExternalInterface.addCallback(ActionScript 3.0)公開給 JavaScript 的函數,在 ie 6 上會找不到。
問題點在以下片段:
var obj = document.createElement('div'); obj.innerHTML = '<object (略…)><embed (略…) /></object>'; document.body.appendChild(obj);
想重現的話,我寫了簡單的原始檔放在這裡(DivShare),別忘了要用 ie 開才能得到最佳瀏覽效果。
解決辦法是把 innerHTML
那行寫在最後,變成:
var obj = document.createElement('div'); document.body.appendChild(obj); obj.innerHTML = '<object (略…)><embed (略…) /></object>';
結論,在 DOM 元素實際被加進頁面之前,ExternalInterface 不是不會生效(前面沒提到,ExternalInterface.call 會在 appendChild 之前就 call 了……),但是 ExternalInterface.addCallback 會碰到未知的問題。
有 0 個意見
☂