如何绑定函数以在嵌入上单击事件

时间:2017-07-05 11:21:06

标签: javascript html flash

我试图将一个函数绑定到嵌入(flash文件)上的事件。但问题是支持,所以我正在寻找跨浏览器解决方案。第一个想法是将onclick属性添加到embed元素,但在 Chrome (v.59.0.3071.115)中,click事件永远不会被触发,或 onclick无法正常工作。 ..

代码1

<embed onclick='myFunction(myOpts)'
       class="item" 
       src="/file.swf">

function myFunction(myOpts){
    console.log('is working!!!!');
}

以上代码无法在Chrome上运行。所以,我正在考虑以一种新的方式在一个点击事件上调用这个函数:一个带有onclick属性的父div并用javascript激活嵌入点击(播放Flash),这就是代码:

代码2

<embed onclick='myFunction(myOpts, event)'
       class="item" 
       src="/file.swf">

function myFunction(myOpts, event){
    console.log('is working!!!!');
    event.target.getElementsByTagName('embed')[0].click();
}

但嵌入式点击永远不会被解雇......所以,我的问题是:

有没有办法在嵌入时使用click事件调用函数?如果答案是肯定的,那么在不影响其行为的情况下调用函数的最佳方法是什么?

2 个答案:

答案 0 :(得分:1)

对于那些寻找答案的人来说,这就是我所做的:

现在我使用对象标记来显示Flash文件而不是只显示嵌入标记:

<object id="objectId" classid="clsid:D27CDB6E-AE6D-11cf-96BB-444553540000"  onmouseup="myFunction(myOpts)"
      name="objectName" type="application/x-shockwave-flash" data="flash.swf" width="100%" height="100%">
      <param name="movie" value="flash.swf"/>
      <param name="quality" value="high"/>
      <param name="allowscriptaccess" value="always"/>
      <param name="wmode" value="transparent"/>
      <embed src="flash.swf" wmode="transparent" width="100%" height="100%" allowscriptaccess="always"
      allowfullscreen="true" name="embedName" id="embedId" data="flash.swf">
      </embed>
</object>

要在不丢失Flash文件行为的情况下致电myFunction()我使用onmouseup代替onclick

答案 1 :(得分:0)

如果您需要获取当前元素,请在onClick函数内传递this

然后,您就可以在element.click()内拨打myFunction

onClick="myFunction('test', this)"

function myFunction(myOpts, element) {

    console.log(element, 'is working!!!!');
    // calling here element.click() will trigger myFunction twice
}