在WEB页面中包含交互控件时,浏览器会提示用户是否激活该对象,例如在页面中包含SVG的时候:
<
html
><
head
><
title
>
SVG事件
</
title
>
< body >< embed name ="id1" align ="top" src ="1.svg" height ="200px" width ="400px" type ="image/svg+xml" >
</ body >
</ html >
< body >< embed name ="id1" align ="top" src ="1.svg" height ="200px" width ="400px" type ="image/svg+xml" >
</ body >
</ html >
当鼠标移动到SVG上,会提示“单击以激活并使用该控件”。
MSDN中是这样描述的:
交互控件 是提供用户界面的 ActiveX 控件。当 Web 页使用 APPLET、EMBED 或 OBJECT 元素加载某个 ActiveX 控件时,该控件的用户界面在用户激活它之前一直是阻止的。如果一个页面使用这些元素加载多个控件,则每个交互控件必须单独激活。
如果某个控件未激活,就会出现以下结果。
• 与用户交互相关的动态 HTML (DHTML) 事件(如 onblur 和 onclick)被阻止。附录 A 列出控件未激活时受阻的 DHTML 事件。
• 该控件不响应键盘或鼠标生成的窗口消息,如 WM_CLICK、WM_KEYPRESS 等。
• 覆盖窗口(创建于控件的 OLE 站点)防止键盘和鼠标消息到达未激活的控件。
创建了一个未激活控件后,Internet Explorer 使用不同技术防止键盘或鼠标窗口消息到达该控件。如果未激活控件是一个有窗口的控件(如 HTML Help 控件),Internet Explorer 使用 EnableWindow 函数禁用这个未激活控件的窗口。当用户激活一个有窗口的控件时,该函数激活禁用的窗口。如果未激活控件是一个无窗口控件(如 Office Web 组件),则该控件的容器会筛选键盘和鼠标消息。
如果某个控件未激活,它不响应用户输入,但执行与交互无关的操作。例如,如果您打开一个使用 Microsoft Windows 媒体播放器播放音乐文件的 Web 页,该页加载后才会播放音乐。只有该控件的用户界面激活后,您才能与 Windows 媒体播放器交互。
如果某个控件未激活,就会出现以下结果。
• 与用户交互相关的动态 HTML (DHTML) 事件(如 onblur 和 onclick)被阻止。附录 A 列出控件未激活时受阻的 DHTML 事件。
• 该控件不响应键盘或鼠标生成的窗口消息,如 WM_CLICK、WM_KEYPRESS 等。
• 覆盖窗口(创建于控件的 OLE 站点)防止键盘和鼠标消息到达未激活的控件。
创建了一个未激活控件后,Internet Explorer 使用不同技术防止键盘或鼠标窗口消息到达该控件。如果未激活控件是一个有窗口的控件(如 HTML Help 控件),Internet Explorer 使用 EnableWindow 函数禁用这个未激活控件的窗口。当用户激活一个有窗口的控件时,该函数激活禁用的窗口。如果未激活控件是一个无窗口控件(如 Office Web 组件),则该控件的容器会筛选键盘和鼠标消息。
如果某个控件未激活,它不响应用户输入,但执行与交互无关的操作。例如,如果您打开一个使用 Microsoft Windows 媒体播放器播放音乐文件的 Web 页,该页加载后才会播放音乐。只有该控件的用户界面激活后,您才能与 Windows 媒体播放器交互。
有时我们希望避免这种情况,让用户可以在页面显示后直接使用该控件,以便给用户更好的使用感觉,这时有两个办法
1,可以使用脚本外部加载的方法,在HTML中不直接使用embed方法,而是嵌入一个外部脚本
<
script src
=
"
Embed1.js
"
></
script
>
在脚本中使用动态加载的方式,将SVG或其它交互控件嵌入页面
document.write(
'
<embed name="id1" align="top" src="1.svg" height="200px" width="400px" type="image/svg+xml">
'
);
这是再打开页面,就不用用户激活控件了。
2,使用frame或iframe框架,在框架中引入控件
<
html
>
< head >< title > FRAMES </ title >
< frameset rows ="100,*" >
< frame src ="play.svg" name ="svg1" />
< frameset cols ="50%,50%" >
< frame src ="2.svg" name ="svg2" />
< frame src ="3.svg" name ="svg3" />
</ frameset >
</ frameset >
</ html >
< head >< title > FRAMES </ title >
< frameset rows ="100,*" >
< frame src ="play.svg" name ="svg1" />
< frameset cols ="50%,50%" >
< frame src ="2.svg" name ="svg2" />
< frame src ="3.svg" name ="svg3" />
</ frameset >
</ frameset >
</ html >
可见第二种方法更加方便直观,不过在实际测试中发现对OBJECT方法嵌入的控件,例如媒体播放器等,只能使用第一种方式,使用FRAME的方法无效。