我试图将一个函数绑定到嵌入(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事件调用函数?如果答案是肯定的,那么在不影响其行为的情况下调用函数的最佳方法是什么?
答案 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
}