标签: swfobject

未捕获错误:在NPObject上调用方法时出错

我的页面上有一个flash视频如下:

<script type="text/javascript">
var flashvars = {
};
var params = {
    movie: "VideoMain.swf",
    quality: "high",
    bgcolor: "#000000",
    allowScriptAccess: "always",
    wmode: "transparent"
};
var attributes = {
  id: "VideoMain",
  name: "VideoMain",
  classid: "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",
  width: "100%",
  height: "100%"
};
swfobject.embedSWF("./video/VideoMain.swf", "myVideoContent", "100%", "100%", "11.0.0","", flashvars, params, attributes);
</script>

<div id="myVideoContent">
    <h1>Oooppsss....you need flash or a newer version of flash</h1>
    <p><a href="http://www.adobe.com/go/getflashplayer"><img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Get Adobe Flash player" /></a></p>
</div>
Run Code Online (Sandbox Code Playgroud)

以上内容将附加到#VideoMain中

然后我有以下内容:

$('#X.click').click(function(e) {
    var flash = document.getElementById("VideoMain");
    flash.sendToActionScriptPublishVideo(true);
});
Run Code Online (Sandbox Code Playgroud)

这会因控制台错误而失败:

Uncaught Error: …
Run Code Online (Sandbox Code Playgroud)

flash jquery adobe swfobject

34
推荐指数
1
解决办法
8万
查看次数

如何检查浏览器是否支持HTML5?

编辑我现在更改了一些Javascript,所以如果我能找到一个检测HTML5视频支持的javascript函数,它应该可以工作.

我有一个HTML5视频播放器,闪存后备,如果不支持HTML5,我希望它回退到闪存.我目前正在使用

<!--[if !IE]><!--> then load my custom player else use SWFObject to render it.

是否有可能做到以下几点:

`  If (HTML5 supported browser) {
 <some html and script>  (My custom player)
}else{
  <different html and script> (I would call  SWFobject here)
}
`
Run Code Online (Sandbox Code Playgroud)

试图找到一个很好的简单解决方案的想法.

通常我可以<object>在视频标签中添加一个额外的,但由于播放器插入页面的方式,这是不可能的.

即使我可以使用可能不可靠的方法检测HTML5支持,但我不确定如何根据支持的输出获取HTML

javascript browser jquery html5 swfobject

24
推荐指数
4
解决办法
4万
查看次数

什么是crossdomain.xml文件?

其实我希望我知道从哪里开始......

我在我的个人网站上嵌入了第三方SWF图像库控件.

SWF是XML驱动的.我动态加载XML文件如下....

  var flashvars = { xmlPath: "http://www.example.com/xml.aspx" };
                var params = { allowFullScreen: "true", wmode: "transparent", allowScriptAccess: "always"};
                var attributes = {};
                swfobject.embedSWF("main.swf", "gallery", "100%", "100%", "9.0.0", "expressInstall.swf", flashvars, params, attributes);
Run Code Online (Sandbox Code Playgroud)

问题是页面没有按预期工作.实际上它只适用于Firefox,而不适用于Chrome或IE

用fiddler检查请求后,我发现找不到文件crossdomain.xml.所以,stackoverflow帮助我找到了一个样本......

<?xml version="1.0" ?>
<cross-domain-policy>
  <site-control permitted-cross-domain-policies="master-only"/>
  <allow-access-from domain="*"/>
  <allow-http-request-headers-from domain="*" headers="*"/>
</cross-domain-policy>
Run Code Online (Sandbox Code Playgroud)

添加crossdomain.xml后,网页现在可以在Firefox和IE浏览器中使用在Chrome中我仍然有问题.

所以这里有几个问题......

1)什么是crossdomain.xml?

2)如何让我的网页也能在Chrome中运行?

asp.net flash swfobject crossdomain.xml cross-domain

17
推荐指数
2
解决办法
4万
查看次数

YouTube API - 不会触发'onYouTubePlayerReady()'

根据我的阅读,我应该如何设置YouTube API:

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta content='text/html;charset=UTF-8' http-equiv='content-type' />
    <title>Youtube Player</title>
    <script src="jquery.js" type="text/javascript"></script>
    <script src="http://ajax.googleapis.com/ajax/libs/swfobject/2.2/swfobject.js" type="text/javascript"></script>
    <script type="text/javascript" charset="utf-8">
      function onYouTubePlayerReady(id) {
        console.log("onYouTubePlayerReady() Fired!");
        var player = $("#youtube_player").get(0);
      }

      var params = { allowScriptAccess: "always" };
      var atts = { id: "youtube_player" };
      swfobject.embedSWF("http://www.youtube.com/apiplayer?enablejsapi=1", 
                         "youtube", "425", "356", "8", null, null, params, atts);

    </script>
  </head>
  <body>
    <div id="youtube"></div>
  </body>
</html>
Run Code Online (Sandbox Code Playgroud)

但是,'onYouTubePlayerReady()'根本不会触发,如果我手动获取对播放器的引用,则很多方法都是未定义的; 例如,cueVideoById()可以工作,但playVideo()不能.

我该如何解决这个问题?

javascript swfobject youtube-api

16
推荐指数
2
解决办法
2万
查看次数

如何使用SWFObject检测闪存

我已下载SWFObject,并将其包含在我的网站中.现在,我想简单地根据用户浏览器访问我的网站时是否安装Flash 来获取truefalse值.

我怎样才能做到这一点?

javascript flash swfobject

14
推荐指数
1
解决办法
1万
查看次数

将Flash(swf)文件嵌入HTML(和XHTML)文档的最终方法是什么?

像大多数人一样,我使用SWFObject将Flash(swf)文件嵌入到我的Web项目中.

如您所知,SWFObject提供了两种嵌入Flash的方法:静态发布和动态发布.

静态发布使用常规标记将文件嵌入到文档中,并且还使用仅使用常规标记无法进行的JavaScript检查.这很好,好像你有无法打开JavaScript的客户(搜索引擎,一些便携式设备......),文件仍会显示(如果他们安装了正确的Flash插件).但是如果你有遗留/未修补的Internet Explorer上的人(2006年4月到2008年4月),他们将有可怕的"点击激活"与Flash进行交互.

动态发布使用JavaScript嵌入Flash.这将摆脱旧IE上的"点击激活"功能,但如果JavaScript关闭,Flash将根本不存在.

这两种方法都有其优点和不便之处.在一个乌托邦世界中,我们都会使用动态发布方法,但是我们(或者至少我们中的一些人)喜欢使用IE 6的旧系统(他们想要升级,但他们不能因为非常糟糕)设计软件,升级费用为10K + $).我需要支持旧版IE,并希望摆脱"点击激活"功能,同时支持关闭JavaScript的人.

那么结合静态动态发布方法呢?怎么样的:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
    <head>
        <title>SWFObject 2 static+dynamic publishing example page</title>
        <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
        <script type="text/javascript" src="swfobject.js"></script>
        <script type="text/javascript">
        swfobject.embedSWF("test.swf", "myContent", "300", "120", "9.0.0", "expressInstall.swf");
        </script>
    </head>
    <body>
        <div id="myContent">
            <object id="myId" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="300" height="120">
                <param name="movie" value="test.swf" />
                <!--[if !IE]>-->
                <object type="application/x-shockwave-flash" data="test.swf" width="300" height="120">
                <!--<![endif]-->
                <div>
                    <h1>Alternative content</h1>
                    <p><a href="http://www.adobe.com/go/getflashplayer"><img …
Run Code Online (Sandbox Code Playgroud)

javascript flash swfobject

11
推荐指数
2
解决办法
4911
查看次数

将任意flash对象wmode更改为透明

我需要将wmode任意flash对象从外部js文件更改为透明,以确保它们不使用Jquery或类似的lib来隐藏菜单.

在FF我使用getElementsByTagName("embed")和设置属性.它似乎运作良好.

具体来说我在IE7 中遇到了objectswfObject库设置的问题.

swfObject 在iE7中创建以下代码:

<OBJECT id=mymovie height=400 width=134 classid=clsid:D27CDB6E-AE6D-11cf-96B8-444553540000>
        <PARAM NAME="_cx" VALUE="3545">
        <PARAM NAME="_cy" VALUE="10583">
        <PARAM NAME="FlashVars" VALUE="">
        <PARAM NAME="Movie" VALUE="imgs/site/tower.swf">
        <PARAM NAME="Src" VALUE="imgs/site/tower.swf">
        <PARAM NAME="WMode" VALUE="Window">
        <PARAM NAME="Play" VALUE="0">
        <PARAM NAME="Loop" VALUE="-1">
        <PARAM NAME="Quality" VALUE="High">
        <PARAM NAME="SAlign" VALUE="">
        <PARAM NAME="Menu" VALUE="-1">
        <PARAM NAME="Base" VALUE="">
        <PARAM NAME="AllowScriptAccess" VALUE="">
        <PARAM NAME="Scale" VALUE="ShowAll">
        <PARAM NAME="DeviceFont" VALUE="0">
        <PARAM NAME="EmbedMovie" VALUE="0">
        <PARAM NAME="BGColor" VALUE="FFFFFF">
        <PARAM NAME="SWRemote" VALUE="">
        <PARAM NAME="MovieData" VALUE="">
        <PARAM NAME="SeamlessTabbing" VALUE="1">
        <PARAM …
Run Code Online (Sandbox Code Playgroud)

javascript flash swfobject object wmode

10
推荐指数
2
解决办法
1万
查看次数

在ExternalInterface.addCallback中注册的函数在Javascript中不可用

我正在开发一款Flash游戏,需要在页面上调用一些Javascript并从中获取数据.从Flash调用Javascript工作.从Javascript(通常)调用Flash函数不会.

我正在使用Gaia框架.

怎么了:

  1. swf与SWFObject一起加载
  2. Flash文件中有一个按钮.单击时,它用于ExternalInterface.call()调用Javascript函数.这有效.
  3. Javascript函数调用公开的Flash函数ExternalInterface.addCallback().
  4. 有时,Javascript会产生以下错误:TypeError: myFlash.testCallback is not a function.
  5. 发生错误时,它会影响注册的所有功能addCallback().Gaia及其中包含的一些库使用addCallback(),从Javascript调用这些函数也会产生TypeError.
  6. 在Flash中按下按钮之前等待很长时间并不能解决错误.
  7. 让Flash addCallback()定期重试并不能解决错误
  8. 发生错误时,ExternalInterface.available = trueExternalInterface.objectID包含Flash嵌入对象的正确名称.
  9. 发生错误时,document.getElementById('myflashcontent')正确返回Flash嵌入对象.

编辑添加:

  • 此问题出现在Firefox 3.6中,但不出现在Chrome或IE8中.我没有尝试旧版浏览器.
  • 我正在运行Flash播放器的Debug版本.
  • 我的电话ExternalInterface.addCallback()被包裹在一个try...catch街区.发生JS错误时,不会触发该catch块.这是一场无声的失败.
  • 在webhost上进行测试时发生错误,swf从与其所在页面相同的服务器加载.
  • 我设置allowScriptAccess = always.
  • 设置flash.system.Security.allowDomain("mydomain")不能解决错误.

从我的Page类:

public class MyPage extends AbstractPage
{
    // declarations of stage instances and class variables …
Run Code Online (Sandbox Code Playgroud)

javascript flash swfobject actionscript-3 externalinterface

10
推荐指数
1
解决办法
1万
查看次数

如何检查Flash插件是否在Chrome中被阻止

如何使用jquery或javascript检查是否在Chrome中阻止了Flash插件?

我们可以使用下面的方法检查已禁用的Flash插件

((typeof navigator.plugins != "undefined" && typeof navigator.plugins["Shockwave Flash"] == "object") || (window.ActiveXObject && (new ActiveXObject("ShockwaveFlash.ShockwaveFlash")) != false));
Run Code Online (Sandbox Code Playgroud)

在Chrome中,您可以通过单击禁用个别插件来单独禁用插件.然后,如果我们单独禁用插件,则上面的查询工作并返回false.但是,如果我们阻止所有插件,它将仅返回true.我关心的是如何检测插件已被阻止.

javascript jquery swfobject

9
推荐指数
1
解决办法
6035
查看次数

SwfObject - 在没有"允许运行..."firefox消息的情况下检测闪存

我一直在我的一个项目中使用swfobject来检测最终用户是否安装了Flash版本.问题出在Firefox上,因为它显示消息:"允许运行Adobe Flash?" 这是我想避免的.

这不是向最终用户显示替代内容,我想要的只是尝试检测Flash,如果没有安装闪存,则不显示任何内容,但如果安装了闪存,则不显示允许运行. ..在Firefox中的消息.

有谁知道用SwfObject防止这种情况发生的任何方法?

注意:只需在html标题中包含下一行:

<script type="text/javascript" src="swfobject.js"></script>
Run Code Online (Sandbox Code Playgroud)

它会触发允许运行消息:S

如果你认为有一个更好的替代swfobject来解决这个问题,它是一个很好的多用途swf处理工具,我很满意.

以下是该消息的示例:

在此输入图像描述

谢谢

javascript flash firefox swfobject

8
推荐指数
1
解决办法
1099
查看次数