欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

JS訪問(wèn)SWF的函數(shù)用法實(shí)例

 更新時(shí)間:2015年07月01日 15:00:53   作者:PHP之家  
這篇文章主要介紹了JS訪問(wèn)SWF的函數(shù)用法,實(shí)例分析了javascript訪問(wèn)swf文件的方法及易錯(cuò)點(diǎn)的處理技巧,需要的朋友可以參考下

本文實(shí)例講述了JS訪問(wèn)SWF的函數(shù)用法。分享給大家供大家參考。具體分析如下:

關(guān)于Flash和JS相互調(diào)用的例子已經(jīng)說(shuō)很多了,這不是難題,當(dāng)然,調(diào)用錯(cuò)誤這也不是Flash和JS的錯(cuò)誤,我們今天就來(lái)徹底解決IE,F(xiàn)F和Chrome之間的不兼容問(wèn)題!

我們知道,F(xiàn)lash中,如果訪問(wèn)外部JS函數(shù),只需 

復(fù)制代碼 代碼如下:
flash.external.ExternalInterface.call("JS中的函數(shù)名");
這一句即可

如果要JS訪問(wèn)Flash中的函數(shù),需要用addCallBack注冊(cè)一個(gè)回調(diào)函數(shù),讓JS去調(diào)用(AS2例子)

import flash.external.*;
var methodName:String = "SetImgPath";
//JS需要調(diào)用的函數(shù)名字
var instance:Object = null;
var method:Function = extractstr;
//Flash中實(shí)際的函數(shù)名字,參數(shù)忽略,但是你調(diào)用的時(shí)候要記得有參數(shù)的要加上
var wasSuccessful:Boolean = ExternalInterface.addCallback(methodName, instance, method);
trace(wasSuccessful+"-callback")

我們可以trace一下,這個(gè)時(shí)候如果是true,表示注冊(cè)成功

OK,下面web中試用一下:

<div style="margin-left:50px; margin-bottom:50px"><input type="text" id="mytxt" border="1" value="這是測(cè)試框,調(diào)用頁(yè)面JS演示" style="width:200px"/></div>
  <div id="flashContent">
   <object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="515" height="320" id="123" align="middle">
    <param name="movie" value="123.swf" />
    <param name="quality" value="high" />
    <param name="bgcolor" value="#000000" />
    <param name="play" value="true" />
    <param name="loop" value="true" />
    <param name="wmode" value="transparent" />
    <param name="scale" value="showall" />
    <param name="menu" value="true" />
    <param name="devicefont" value="false" />
    <param name="salign" value="" />
    <param name="allowScriptAccess" value="sameDomain" />
    <!--[if !IE]>-->
    <object type="application/x-shockwave-flash" data="123.swf" width="515" height="320"><!--下面針對(duì)非IE內(nèi)核瀏覽器--> 
     <param name="movie" value="123.swf" />
     <param name="quality" value="high" />
     <param name="bgcolor" value="#000000" />
     <param name="play" value="true" />
     <param name="loop" value="true" />
     <param name="wmode" value="transparent" />
     <param name="scale" value="showall" />
     <param name="menu" value="true" />
     <param name="devicefont" value="false" />
     <param name="salign" value="" />
     <param name="allowScriptAccess" value="sameDomain" />
    <!--<![endif]-->
     <a href="upload/2011/1/201101281000491420.gif" alt="獲得 Adobe Flash Player" />
     </a>
    <!--[if !IE]>-->
    </object>
    <!--<![endif]-->
   </object>
  </div>

OK,我們?cè)赪eb中加一個(gè)button來(lái)調(diào)用這個(gè)flashcall:<input type="button" onclick="flashcall('./image/1.jpg')" value="JS調(diào)用SWF">

測(cè)試一下:

IE6,7,8,9一切正常

FF:失敗

Chrome:失敗

失敗原因:SetImgPath不是函數(shù),(is not a function /not defined)

這就很奇怪了,我們可以用一個(gè)alert,來(lái)輸出

復(fù)制代碼 代碼如下:
thisMovie("123"):alert(thisMovie("123"));

輸出結(jié)果并不是Null,說(shuō)明已經(jīng)找到了我們的Flash,但是為啥FF和Chrome就總是找不到函數(shù)呢?

逛了各大論壇,比較一致的說(shuō)法是addCallback必須要是flash加載完畢才能注冊(cè)成功,好吧,我們加一個(gè)settimeout函數(shù),判斷是否加載成功,我們改一下上面的flashcall:

function flashcall(str){  
&nbsp;&nbsp;&nbsp;&nbsp; try{   
  thisMovie("123").SetImgPath(str);//注意,123是上面的ID,而SetImgPath是我們Flash中的注冊(cè)的回調(diào)函數(shù)
 }cache(e){
  settimeout("flashcall(str)",100 );
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
}

恩,我們用個(gè)settimeout,每隔100毫秒去調(diào)用一次,如果異常就持續(xù)調(diào)用,直到成功為止!

遺憾的是,始終不成功,程序進(jìn)入死循環(huán)!

通過(guò)查閱各種資料,終于找到了原因:

FF中瀏覽器只認(rèn)識(shí)embed標(biāo)記,所以如果你用getElementById獲 flash的時(shí)候,需要給embed做ID標(biāo)記,而IE是認(rèn)識(shí)object標(biāo)記的 ,所以你需要在object上的ID做上你的標(biāo)記

明白了嗎?原來(lái)在FF和Chrome中,F(xiàn)lash必須用embed才能識(shí)別出他的ID,用Object標(biāo)簽是無(wú)法識(shí)別ID的,我用的Html是Flash自動(dòng)生成的,都是Object標(biāo)簽,害我調(diào)試了一個(gè)下午,才明白原來(lái)問(wèn)題出在這里。

知道原因了,就好處理了,改標(biāo)簽:

<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,19,0" width="515" height="320" id="123" title="123" align="middle">
 <param name="allowScriptAccess" value="always" />
 <param name="movie" value="123.swf">
 <param name="quality" value="high">
  <param name="wmode" value="transparent" />
 <embed src="123.swf" name="123" quality="high" allowScriptAccess="always" swLiveConnect="true" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" width="515" height="320"></embed>
</object>

把嵌入Flash的標(biāo)簽改為上面的,一切OK!

希望本文所述對(duì)大家的javascript程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • js實(shí)現(xiàn)隨機(jī)點(diǎn)名程序

    js實(shí)現(xiàn)隨機(jī)點(diǎn)名程序

    這篇文章主要為大家詳細(xì)介紹了js實(shí)現(xiàn)隨機(jī)點(diǎn)名程序,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-11-11
  • typescript中正則表達(dá)式的常用使用方法

    typescript中正則表達(dá)式的常用使用方法

    這篇文章主要給大家介紹了關(guān)于typescript中正則表達(dá)式的常用使用方法,TypeScript是一種靜態(tài)類型的JavaScript超集,它提供了對(duì)正則表達(dá)式的全面支持,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-11-11
  • Javascript 高性能之遞歸,迭代,查表法詳解及實(shí)例

    Javascript 高性能之遞歸,迭代,查表法詳解及實(shí)例

    這篇文章主要介紹了Javascript 高性能之遞歸,迭代,查表法詳解及實(shí)例的相關(guān)資料,需要的朋友可以參考下
    2017-01-01
  • 老生常談javascript的類型轉(zhuǎn)換

    老生常談javascript的類型轉(zhuǎn)換

    下面小編就為大家?guī)?lái)一篇老生常談javascript的類型轉(zhuǎn)換。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-10-10
  • uniapp實(shí)現(xiàn)可以左右滑動(dòng)導(dǎo)航欄

    uniapp實(shí)現(xiàn)可以左右滑動(dòng)導(dǎo)航欄

    這篇文章主要為大家詳細(xì)介紹了uniapp 實(shí)現(xiàn)可以左右滑動(dòng)導(dǎo)航欄,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-10-10
  • 詳談javascript精度問(wèn)題與調(diào)整

    詳談javascript精度問(wèn)題與調(diào)整

    下面小編就為大家?guī)?lái)一篇詳談javascript精度問(wèn)題與調(diào)整。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-07-07
  • 在新窗口打開(kāi)超鏈接的方法小結(jié)

    在新窗口打開(kāi)超鏈接的方法小結(jié)

    有時(shí)候我們想讓用戶在新窗口打開(kāi)網(wǎng)站,因?yàn)槟J(rèn)當(dāng)前窗口打開(kāi),很多情況下,用戶并不喜歡
    2013-04-04
  • javascript arguments使用示例

    javascript arguments使用示例

    這篇文章主要通過(guò)一個(gè)實(shí)例,簡(jiǎn)單介紹了javascript arguments使用方法,小伙伴們參考下。
    2014-12-12
  • 簡(jiǎn)單了解TypeScript中如何繼承 Error 類

    簡(jiǎn)單了解TypeScript中如何繼承 Error 類

    這篇文章主要介紹了簡(jiǎn)單了解TypeScript中如何繼承 Error 類,一個(gè)典型的網(wǎng)站服務(wù)器可能需要有 NetworkError, DatabaseError, UnauthorizedError 等。 我們希望這些類都擁有 Error 的特性:有錯(cuò)誤消息、有調(diào)用棧、有方便打印的 toString 等。,需要的朋友可以參考下
    2019-06-06
  • MvcPager分頁(yè)控件 適用于Bootstrap

    MvcPager分頁(yè)控件 適用于Bootstrap

    這篇文章主要為大家詳細(xì)介紹了MvcPager分頁(yè)控件,修改后適用于Bootstrap,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-06-06

最新評(píng)論