由object元素引出的事件注册问题和层级显示问题

项目有一个双击监控视频全屏的需求,视频播放使用的是IE下的ActiveX控件,web页面中使用HTML嵌入对象元素object。预期方案如下:

1.在开发ActiveX控件时加入双击事件。

2.通过div包裹object,控制div的大小从而间接实现全屏效果。

在实施第二种方案的过程中,发现如下两个问题:

事件注册问题

在第二种方案中,首先经过测试添加单击或双击事件均无响应。

(疑问1:object不支持单双击事件?但在IE下发现这种方式可以响应:

function fullscreen(a){alert(a);}
/**
*错误的方式:不传参数,会弹出undefined,会直接执行fullScreen函数,这段代码相当于如下两行:
*var temp=fullScreen(); 
*document.getElementById("objectid").οnclick=temp;
*/
document.getElementById("objectid").οnclick=fullScreen();
/**
*错误的方式:传参数时,会弹出1,会直接执行fullScreen函数,这段代码相当于如下两行:
*var temp=fullScreen(1); 
*document.getElementById("objectid").οnclick=temp;
*/
document.getElementById("objectid").οnclick=fullScreen(1);
/**
*正确的方式,此时会弹出event对象,但由于object元素不支持事件所以并不响应
*/
document.getElementById("objectid").οnclick=fullScreen;
结论:在通过对象的属性注册事件函数的时候,表达式的右值必须为一个函数名字即不带括号,并且不可手动传递参数(浏览器会将event对象自动传入或window.event),
从表达式本身出发我们也能发现,表达式为一个赋值表达式,‘=’的右值是一个指向函数的地址,
当只写函数名字的时候,此时右值的函数名字相当于一个指针,指向函数体所在的内存地址,等到事件发生时就会调用并执行相应的函数。
但是当加了括号后,会首先计算右边的函数体,而函数体执行必然会返回一个值(显示的return返回值或undefined),这个值则会作为右值赋值给onclick等类似的属性。

 

 

 

经过测试,在IE下,不管是属性注册事件或者方法注册事件均不能响应。即Object作为一个嵌入对象元素是不支持浏览器中各种事件的,这样做的目的可能是作为一个引用外部资源的元素来说,object本身不具备响应事件的能力,而把这种交互能力给予外部的对象,以避免类似ActiveX这样的控件的行为与object的行为冲突。

层级显示问题

然后我想通过透明div覆盖object,给div添加单双击事件,但是发现div无法覆盖,查阅后才知道object似乎拥有很高的层级。

(疑问2:object作为嵌入对象元素是否在web文档流中?我的猜测:从web历史上来看,web文档最初是用来显示文本的,作为引用外部资源的object元素是不在文档流中的,而且我发现在ie下选取元素的时候是无法选取到object元素的,其他浏览器暂时未测试。)

从查阅得知iframe的层级高于object,于是便设置div覆盖iframe,iframe覆盖object,从而间接实现div覆盖object。

虽然覆盖可以实现,但是有一个问题就是当div和iframe都设置透明时,object似乎夹在二者中间被贯穿了,直接一透到底,透明的下面不是object,而是网页的底色。

 1 <div class="wrap2-item-video1">
 2                 <div ondblClick="fullScreen()" style="color:#fff;font-size:12px;position:absolute;background:green;width:50px;height:50px;top:0;left:0;z-index:9;">
 3                     放大/缩小    
 4                 </div>
 5                 
 6                 <iframe style="background:red;position:absolute;visibility:inherit; top:0px;left:0px;width:100px;height:100px;z-index:1;"></iframe>
 7                 
 8                 <object classid="clsid:30209FBC-57EB-4F87-BF3E-740E3D8019D2" codebase="" standby="Waiting..."
 9                         id="playOcx" width="100%" height="100%" name="playOcx" align="center">
10                         <param value="transparent" name="wmode">
11                 </object>
12</div>

如上,div(绿色,zindex:9),iframe(红色,zindex:1),object三者的层级关系。

修改div的背景,添加边框,修改iframe的背景后,如上,div(红色边框透明,zindex:9),iframe(透明,zindex:1),object三者的层级关系。

 最后:似乎第二种方案并不可行,只能修改成通过不在object元素范围内的元素控制大小的方案,比如在页面里添加个button并绑定事件或者重写控件添加交互事件。

转载于:https://www.cnblogs.com/luanfujian/p/9324801.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/427432.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

cad钣金展开插件_钣金高级工考试大小头手工展开图步骤教程

提醒&#xff1a;点上方↑↑↑“钣金学习网”免费关注简单方法一: 等分弧画法简单方法二: 角度计算画法1、先画一条中心直线&#xff0c;在线上取一点A&#xff0c;过&#xff21;点画一条与中心线垂直相交线。量取大头半径以&#xff21;点为起点在相交线上标注一点&#…

介绍一个新鲜玩意 开源的杀毒软件

有“免费的午餐”我们为什么不吃呢&#xff1f;杀毒软件一定要购买或用D版吗&#xff1f;先别忙着下结论&#xff0c;请耐心看完本文&#xff0c;然后再告诉我你是怎么想的。&#xff08;一&#xff09;、ClamWin Free Antivirus 开源反病毒软件 GPL协议SourceForge页面&#x…

没有可用软件包 jenkins。_Jenkins分布式构建与并行构建

Jenkins分布式构建与并行构建 jenkins的架构 Jenkins采用的是“masteragent&#xff08;slave&#xff09;”架构。Jenkins master负责提供界面、处理HTTP请求及管理构建环境&#xff1b;构建的执行则由Jenkins agent负责 Jenkins agent的横向扩容&#xff1a;只需要增加agent就…

使用ping命令检查路由之解惑

网络工程师都会用到Ping&#xff0c;它是 检查 路由问题的有效办法。但也常听工程师抱怨&#xff1a;不可能&#xff0c;怎么会不通呢&#xff1f; 这样的困惑一般发生在自认为路由设置正确的时候。举几个笔者遇到的问题&#xff0c;欢迎大家补充。 最简单的三种情况&#xff…

什么是慢查询?如何通过慢查询日志优化?

日志就跟人们写的日记一样&#xff0c;记录着过往的事情。但是人的日记是主观的&#xff08;记自己想记的内容&#xff09;&#xff0c;而数据库的日志是客观的&#xff0c;根据记录内容分为以下好几种日志&#xff1a; a、错误日志&#xff1a;记录启动、运行或停止mysqld时出…

qstring去掉特定字符_如何花式、批量且操作简单地处理字符?

文本字符的规范化&#xff0c;是批量处理的前提。多来源数据或是数据收集本身就必然存在不规范情况&#xff0c;于是批量地完成它就成了常见的需求。对于花式批量处理&#xff0c;自然要说到正则表达式。“正则表达式是对字符串操作的一种逻辑公式&#xff0c;就是用事先定义好…

动漫字幕组 集合

贪婪大陆被非法收购始末 http://blog.csdn.net/freexploit/archive/2005/11/21/534050.aspx预测已经实现~~还好还好先把各字幕组的论坛 地址找了来~~像什么 花园 漫游的这些 大家是熟悉的不能在熟悉了~~所以我就没打上去了~~有不全的请朋友们自己找找吧----------~.~而且现在几…

性能度量RMSE

回归问题的典型性能度量是均方根误差&#xff08;RMSE:Root Mean Square Error&#xff09;。如下公式。 m为是你计算RMSE的数据集中instance的数量。x(i)是第i个实例的特征值向量 ,y(i)是其label&#xff08;期望的模型输出&#xff09;。如下&#xff1a;X是包含了所有实例的…

最近幻影的两个ARP欺骗工具 挺不错的

arpspoof 3.1b主要功能&#xff1a;ARP欺骗过程中进行数据修改&#xff0c;实现会话劫持攻击说明&#xff1a; 本程序公开源代码&#xff0c;为了换取更多朋友的指教实例: 欺骗192.168.0.108访问百度网站的全过程&#xff08;注&#xff1a;#后是我加的注释&#xff09;效果: 1…

python中math库最大值_python-math库解析

math库的数学常数&#xff08;共4个&#xff09; math.pi 表示Π&#xff0c;圆周率&#xff0c;值为3.141592653589…… math.e 表示e&#xff0c;自然对数&#xff0c;值为2.718…… math.inf 表示正无穷大&#xff0c;负无穷大为-math.inf math.nan 表示非浮点数标记 math库…

idea启动项目没错,可是debug却一直启动不起来

原因很简单&#xff1a; 断电打的太多了导致的&#xff0c;去掉不需要的断点之后就好了&#xff01; 转载于:https://www.cnblogs.com/sllcom/p/9327908.html

一个牛人的经历---北京八年——从极度贫困到财务自由

一个牛人的经历---北京八年——从极度贫困到财务自由 第一章&#xff1a; 八年巨变 我1996年7月从东北的一所曾经非常有名的工科大学毕业&#xff0c;快毕业时听了一位同乡校 友姐姐的话“宁到好地方&#xff0c;不到好单位”&#xff0c;经过一番各式各样的努力&#xff0c;96…

python绘制不带颜色曲线图_Python画曲线图

画图方法 from matplotlib import font_manager import numpy as np import matplotlib . pyplot as plt zh_fontfont_manager . FontProperties ( fnamerc:\windows\fonts\simsun.ttc , size14 ) # create a arr x1[ x * 0.5 for x in range( 1 , 20 )] y1x1 # create a arr x…

【数学建模】day02-整数规划

基本类似于中学讲的整数规划--线性规划中变量约束为整数的情形。 目前通用的解法适合整数线性规划。不管是完全整数规划(变量全部约束为整数)&#xff0c;还是混合整数规划(变量既有整数又有实数)&#xff0c;MATLAB都提供了通用的求解函数。 一、0-1型整数规划 这类规划将变量…

那年的夏天很笛子

原文&#xff1a;salance-moon.spaces.live.com在某个阶段&#xff0c;我想应该是时候把至今为止影响自己走上美工&设计&程序之路的历程整理一下了。但是下笔的时候才发现&#xff0c;其实这几乎成了我童年的回忆录&#xff0c;因为程序暂且不算&#xff0c;美工&设…

python数据的格式输出_python

本文主要由Python String Format 一文翻译整理而来&#xff0c;在python中使用 % 进行格式化字符串由来已久&#xff0c;不过在python2.7 的版本中引入了新的格式化字符串的方法。虽然%号的方式依旧可用&#xff0c;不过在[PEP-3101] 中已有含蓄的警告称将完全淘汰python2.6之前…

[kafka]kafka集群实践

环境 iphostnameserver_id192.168.1.111UAT042192.168.1.112UAT031192.168.1.102UAT053配置hosts: 192.168.1.112 UAT03 192.168.1.111 UAT04 192.168.1.102 UAT05 安装jdk # rpm -ivh jdk-8u65-linux-x64.rpm # java -version java version "1.8.0_65" Java(TM) SE …

互联网盈利模式77种创新 【 很八股的标题,不过内容还是可以参考一下的 】

http://it.icxo.com/htmlnews/2006/05/26/854682.htm当整个世界都在为互联网喝彩的时候&#xff0c;人们心中往往都会进行这样的思考--我怎样才能在互联网上获得财富&#xff1f;其实&#xff0c;这个问题是没有人能够回答的&#xff0c;因为可以回答的人正在为获得财富忙得不可…

.gitignore文件_Java小白入门,Git忽略文件.gitignore详解

在工程中&#xff0c;并不是所有文件都需要保存到版本库中的&#xff0c;例如“target”目录及目录下的文件就可以忽略。在Git工作区的根目录下创建一个特殊的.gitignore文件&#xff0c;然后把要忽略的文件名填进去&#xff0c;Git就会自动忽略这些文件或目录。Git 忽略规则优…

Xamarin Essentials教程磁力计Magnetometer

Xamarin Essentials教程磁力计Magnetometer磁力计也叫地磁、磁感器&#xff0c;可用于测试磁场强度和方向。在手持设备中&#xff0c;通过磁力计可以计算设备的左右、前后倾斜角度&#xff0c;广泛应用于手机各种的应用中。在Xamarin中&#xff0c;开发者可以使用Xamarin.Essen…