亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > JS > 正文

JavaScript調用flash.external.ExternalInterface.addCallback注冊的函數在不同瀏覽器下的分析

2024-09-06 12:31:22
字體:
來源:轉載
供稿:網友

  JavaScript在調用flash中使用flash.external.ExternalInterface.addCallback注冊的回調函數時,不同瀏覽器使用的容器對象,和swf文件放置的位置和是否顯示有很大關系,如果未設置對,會找不到flash中注冊的回調函數。

  測試瀏覽器:IE6,IE7,IE8,Firefox3.6,谷歌chrome 14.0.835.202 m

AS腳本

function loadPicture(){//......代碼......//......代碼......}flash.external.ExternalInterface.addCallback("forJS", null, loadPicture);//注冊JavaScript中調用的回調函數



輸出swf到html頁面的JS腳本,swf的ID為swfId

document.write('<div class="dvswf">' + (document.all ? '<object id=swfId classid=clsid:D27CDB6E-AE6D-11cf-96B8-444553540000><param name="src" value="/images/loadSwf.swf"></object>': '<embed id="swfId" type="application/x-shockwave-flash" src="/images/loadSwf.swf"/>') + '</div>');



1)JavaScript如何獲取flash中flash.external.ExternalInterface.addCallback注冊的函數,參考此文章


2)swf的位置和顯示問題
  A)swf元素的display不能設置為none或者容器的display也不能為none,要不找不到注冊的方法,測試代碼如下

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html;charset=gb2312"><style type="text/css">.dvswf{display:none;}</style></head><body><script type="text/javascript">    document.write('<div class="dvswf">' + (document.all ? '<object id=swfId classid=clsid:D27CDB6E-AE6D-11cf-96B8-444553540000><param name="src" value="/images/loadSwf.swf"></object>': '<embed id="swfId" type="application/x-shockwave-flash" src="/images/loadSwf.swf"/>') + '</div>');</script><script type="text/javascript">function $(Id){return document.getElementById(Id);}function getFlashMethod(swfID) {//獲取    if (window[swfID] && window[swfID].forJS) return window[swfID]    if (document[swfID] && document[swfID].forJS) return document[swfID]    if ($(swfID).forJS) return $(swfID)    return false;}function getcontainer() {    var o = getFlashMethod('swfId');    alert(o)//全部輸出為false}</script><input type="button" value="獲取swf容器" onclick="getcontainer()" /><br /></body></html>


  上面為什么getFlashMethod返回的是容器而不是直接返回注冊forJS回調函數,是因為返回forJS的話在Firefox下執行此返回的函數會出現“NPMethod called on non-NPObject wrapped JSObject”錯誤,具體參考firefox NPMethod called on non-NPObject wrapped JSObject!錯誤

  解決辦法就是設置div容器的position為absolute不占用文檔內容,left和top設置為負值,不顯示在可見區域

.dvswf{ position:absolute;left:-100000px;top:-10000px;}



  B)不能在head標簽中輸出swf,要不IE瀏覽器獲取不到flash中flash.external.ExternalInterface.addCallback注冊的函數,測試代碼如下

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html;charset=gb2312"><style type="text/css">/*.dvswf{display:none;}*/</style><script type="text/javascript">    document.write('<div class="dvswf">' + (document.all ? '<object id=swfId classid=clsid:D27CDB6E-AE6D-11cf-96B8-444553540000><param name="src" value="/images/loadSwf.swf"></object>': '<embed id="swfId" type="application/x-shockwave-flash" src="/images/loadSwf.swf"/>') + '</div>');</script></head><body><script type="text/javascript">function $(Id){return document.getElementById(Id);}function getFlashMethod(swfID) {//獲取    if (window[swfID] && window[swfID].forJS) return window[swfID]    if (document[swfID] && document[swfID].forJS) return document[swfID]    if ($(swfID).forJS) return $(swfID)    return false;}function getcontainer() {    var o = getFlashMethod('swfId');    alert(o)//IE瀏覽器輸出flase,Firefox和chrome能獲取到對應的swf容器}</script><input type="button" value="獲取swf容器" onclick="getcontainer()" /><br /></body></html>


  C)如果使用jquery框架,不能使用appendTo,append,html方法添加flash文件,要不IE無法獲取到flash中flash.external.ExternalInterface.addCallback注冊的函數,可以用jquery框架獲取DOM元素后設置DOM元素的innerHTML

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html;charset=gb2312"><style type="text/css">.dvswf{ position:absolute;left:-100000px;top:-10000px;}</style><script type="text/javascript" src="js/jquery.js"></script></head><body><div id="dvswf" class="dvswf"></div><script type="text/javascript">    var swfHTML = document.all ? '<object id=swfId classid=clsid:D27CDB6E-AE6D-11cf-96B8-444553540000><param name="src" value="/images/loadSwf.swf"></object>'        : '<embed id="swfId" type="application/x-shockwave-flash" src="/images/loadSwf.swf"/>';    $(function () {        $('#dvswf').get(0).innerHTML = swfHTML;//0        /*        $(swfHTML).appendTo('#dvswf');//1        $('#dvswf').html(swfHTML);//2        $('#dvswf').append(swfHTML);//3 */    });</script><script type="text/javascript">    function _$(Id) { return document.getElementById(Id); }    function getFlashMethod(swfID) {//獲取        if (window[swfID] && window[swfID].forJS) return window[swfID]        if (document[swfID] && document[swfID].forJS) return document[swfID]        if (_$(swfID).forJS) return _$(swfID)        return false;    }    function getcontainer() {        var o = getFlashMethod('swfId');        alert(o)//只有第0種方法IE才能獲取到swf容器,1,2,3IE都無法獲取到    }</script><input type="button" value="獲取swf容器" onclick="getcontainer()" /><br /></body></html>
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
在线视频国产日韩| 欧美成人在线免费| 国产精品一二区| 国产亚洲视频中文字幕视频| 色妞久久福利网| 久久久久99精品久久久久| 久久夜精品va视频免费观看| 亚洲在线免费观看| 亚洲日韩中文字幕在线播放| 亚洲一区二区三区毛片| 亚洲国产精品一区二区三区| 国产精品老女人精品视频| 6080yy精品一区二区三区| 久久国产一区二区三区| 日韩中文字幕网址| 日韩中文字幕第一页| 日韩在线播放一区| 久久精品国产精品亚洲| 亚洲欧洲一区二区三区久久| 久久亚洲一区二区三区四区五区高| 国产精品成人免费视频| 国产国语videosex另类| 在线电影中文日韩| 国产精品爽黄69| 久久精品中文字幕| 亚洲第一中文字幕在线观看| 国产精品免费一区二区三区都可以| 日韩网站免费观看高清| 欧美激情视频网址| 亚洲国产日韩一区| 国产精品一二区| 欧美电影免费观看高清完整| 91在线观看免费高清完整版在线观看| 亚洲字幕在线观看| 亚洲精品国产综合区久久久久久久| 欧美在线视频导航| 97香蕉久久夜色精品国产| 国产成人涩涩涩视频在线观看| 色yeye香蕉凹凸一区二区av| 亚洲自拍欧美另类| 久久av红桃一区二区小说| 在线一区二区日韩| 国产日韩欧美在线播放| 欧美大尺度在线观看| 精品日本美女福利在线观看| 人体精品一二三区| 欧美性猛交99久久久久99按摩| 国产精品成人免费电影| 九九热在线精品视频| 色琪琪综合男人的天堂aⅴ视频| 欧美性黄网官网| 日韩av电影院| 亚洲精品丝袜日韩| 成人羞羞国产免费| 久久伊人精品天天| 91av网站在线播放| 91超碰中文字幕久久精品| 91av中文字幕| 日韩精品在线免费播放| 久久国产精品首页| 欧美日韩精品中文字幕| 色播久久人人爽人人爽人人片视av| 日韩在线欧美在线国产在线| 91视频88av| 久久久久久久国产精品| 久久在线免费视频| 久久91亚洲精品中文字幕| 日韩精品在线观看网站| 中文字幕日韩欧美在线| 日韩在线播放一区| 亚洲偷欧美偷国内偷| 亚洲男人av电影| 欧美另类99xxxxx| 欧美日韩在线观看视频小说| 中文字幕精品在线| 羞羞色国产精品| 91天堂在线视频| 久久久久久久一区二区| 亚洲人成网站色ww在线| 国产精品成人av性教育| 91精品91久久久久久| 欧美成年人在线观看| 亚洲精品永久免费精品| 九色成人免费视频| 77777少妇光屁股久久一区| 亚洲精品一区二区在线| 国产精品成人久久久久| 国产精品极品美女在线观看免费| 91色中文字幕| 欧美日韩在线视频一区二区| 亚洲人成伊人成综合网久久久| 亚洲最新av网址| 亚洲在线观看视频网站| 欧美黄色性视频| 91精品在线一区| 国产精品777| 国产精品劲爆视频| 性色av一区二区三区| 国产精品网址在线| 精品动漫一区二区| 久久久久久这里只有精品| 91精品久久久久久久久久久久久久| 久久精品国产久精国产一老狼| 欧美成人免费va影院高清| 亚洲欧洲在线视频| 欧美黑人极品猛少妇色xxxxx| 欧美黑人巨大精品一区二区| 91精品国产电影| 国产suv精品一区二区| 国产精品欧美一区二区三区奶水| 国产精品色午夜在线观看| 一本色道久久综合狠狠躁篇的优点| 色与欲影视天天看综合网| 精品欧美激情精品一区| 国产亚洲精品美女久久久| 成人春色激情网| 欧美黑人巨大xxx极品| 国产69精品久久久| 亚洲老头同性xxxxx| 日韩国产高清污视频在线观看| 国产亚洲视频中文字幕视频| 疯狂欧美牲乱大交777| 国产福利精品av综合导导航| 国产在线一区二区三区| 欧美电影在线观看完整版| 九九热这里只有在线精品视| 91青草视频久久| 欧美成人中文字幕在线| 亚洲开心激情网| 亚洲色图欧美制服丝袜另类第一页| 成人午夜高潮视频| 欧美性精品220| 久热精品视频在线观看| 亚洲第一区中文字幕| 这里只有精品丝袜| 国产美女久久久| 欧美乱大交xxxxx| 日韩综合中文字幕| 国产精品羞羞答答| 亚洲激情免费观看| 久久久久国色av免费观看性色| 亚洲午夜久久久久久久| 在线成人免费网站| 久久精品男人天堂| 国产日韩精品一区二区| 欧美午夜精品久久久久久久| 97精品国产97久久久久久| 久久久这里只有精品视频| 国产香蕉一区二区三区在线视频| 88国产精品欧美一区二区三区| 亚洲一区二区三| 黄色成人av网| 欧美日韩中国免费专区在线看| 欧美日韩中国免费专区在线看| 久久久精品亚洲| 亚洲一二三在线| 国产精品wwww| 国产精品视频精品视频| 亚洲成人动漫在线播放| 国产一区二区三区在线免费观看| 91香蕉亚洲精品| 亚洲精品按摩视频| 国产欧美一区二区三区在线看| 国产亚洲精品成人av久久ww|