Javascript使用IE9创建事件

时间:2014-04-29 09:57:32

标签: javascript events internet-explorer-9

我正在尝试用JavaScript创建自定义事件。

我有一个运行Internet Explorer 9的WebBrowser的WPF应用程序。

代码:

var evt = document.createEvent("Event");

evt.initEvent("readerstatechanged", true, false);
window.dispatchEvent(evt);

错误:

enter image description here

我也尝试过:

var evt = new Event("Event");

错误:

enter image description here

您是否知道如何使用IE 9创建自定义事件?

编辑:

我使用createEventObject进行了更改,但随后“InitEvent”无效:

            var evt = document.createEventObject("Event");

            evt.initEvent("printerstatechanged", true, false);
            window.dispatchEvent(evt);

然后我需要像这样使用attachEvent:

            window.attachEvent('printerstatechanged', function (e) {
                //Do something
            });

3 个答案:

答案 0 :(得分:4)

IE9支持DOM3事件,因此您可以创建和挂钩自定义事件。这是一个完整的示例,适用于IE9和任何其他与DOM3兼容的浏览器:Live Copy

<!DOCTYPE html>
<html>
<head>
<meta charset=utf-8 />
<title>IE9+ Custom Event</title>
</head>
<body>
  <script>
    (function() {
      // Hooking the event, in this case on documentElement
      document.documentElement.addEventListener("readerstatechanged", function() {
        display("readerstatechanged received");
      });

      // Creating it
      display("Creating");
      var evt = document.createEvent("CustomEvent");
      evt.initCustomEvent("readerstatechanged", true, false, {});
      // Could put custom data here -------------------------^^

      // Firing it on documentElement
      display("Firing");
      document.documentElement.dispatchEvent(evt);

      function display(msg) {
        var p = document.createElement('p');
        p.innerHTML = String(msg);
        document.body.appendChild(p);
      }
    })();
  </script>
</body>
</html>

它不适用于IE8,但正如你强调IE9 ......

如果您的网站显示在严重错误的&#34;兼容性视图中,&#34; IE关闭了这些标准功能,使其与现实世界的兼容性降低,而不是更多。使用&#34;兼容性视图&#34;对于Intranet站点是默认设置,我相信,这只是asinine。您可以通过向meta部分添加head标记向IE确认您确实知道自己在做什么:

<meta http-equiv="X-UA-Compatible" content="IE=Edge"/>

答案 1 :(得分:-3)

你真的读过createEventObject

上的msdn引用吗?
var myEvent=document.createEventObject ();
//--- enter your data here like you do with initEvent
myEvent.x=200;
myEvent.y=400;
myEvent.button=0;

document.body.fireEvent ("onclick",myEvent);
console.log (myEvent.type);
console.log (myEvent.srcElement);
console.log (myEvent.returnValue);
console.log (myEvent.cancelBubble);

答案 2 :(得分:-4)

即9支持此事件

onabort 用户中止下载图像时触发。

onactivate 将对象设置为活动元素时触发。

onafterprint 在关联文档打印或预览打印后立即触发对象。

onafterupdate 成功更新数据源对象中的关联数据后在数据绑定对象上触发。

onbeforeactivate 在将对象设置为活动元素之前立即触发。

onbeforecopy 在将选择内容复制到系统剪贴板之前,在源对象上触发。

onbeforecut当选 在从文档中删除选择之前触发源对象。

onbeforedeactivate 在activeElement从当前对象更改为父文档中的另一个对象之前立即触发。

onbeforeeditfocus 在可编辑元素中包含的对象进入UI激活状态或选择控件的可编辑容器对象之前触发。

onbeforepaste 在将选择从系统剪贴板粘贴到文档之前,在目标对象上触发。

onbeforeprint 在对象文档打印或预览打印之前触发对象。

onbeforeunload 在页面卸载之前触发。

onbeforeupdate 在更新数据源对象中的关联数据之前触发数据绑定对象。

的onblur 当对象失去输入焦点时触发。

onbounce 当marquee对象的behavior属性设置为&#34; alternate&#34;并且选框的内容到达窗户的一侧。

oncellchange 数据提供程序中的数据更改时触发。

平变化 当对象或选择的内容发生更改时触发。

的onclick 当用户在对象上单击鼠标左键时触发。

oncontextmenu 当用户在客户端区域中单击鼠标右键时打开,打开上下文菜单。

oncontrolselect 当用户要对对象进行控件选择时触发。

oncopy 当用户复制对象或选择时,在源元素上触发,并将其添加到系统剪贴板。

oncut 当从文档中删除对象或选择并将其添加到系统剪贴板时,在源元素上触发。

ondataavailable 当数据从异步传输数据的数据源对象到达时,会定期触发。

ondatasetchanged 当数据源对象公开的数据集发生更改时触发。

ondatasetcomplete 触发以指示数据源对象中的所有数据均可用。

onfocus此 用户双击对象时触发。

ondeactivate 当activeElement从当前对象更改为父文档中的另一个对象时触发。

ondrag当 在拖动操作期间连续触发源对象。

ondragend 当用户在拖动操作结束时释放鼠标时,在源对象上触发。

ondragenter 当用户将对象拖动到有效的放置目标时,触发目标元素。

ondragleave 当用户在拖动操作期间将鼠标移出有效的放置目标时,将触发目标对象。

ondragover 当用户将对象拖动到有效的放置目标上时,会持续触发目标元素。

ondragstart 当用户开始拖动文本选择或所选对象时,在源对象上触发。

ondrop 在拖放操作期间释放鼠标按钮时触发目标对象。

的onerror 当出现阻止跨域请求完成的错误时引发。

的onerror 在对象加载期间发生错误时触发。

onerrorupdate 在更新数据源对象中的关联数据时发生错误时在数据绑定对象上触发。

onfilterchange 当可视过滤器更改状态或完成转换时触发。

onfinish 选框循环完成时触发。

的onfocus 当对象获得焦点时触发。

onfocusin 在将焦点设置在该元素之前触发元素。

onfocusout在 在将焦点移动到另一个元素后立即触发当前元素的焦点。

onhashchange 在片段发生变化时提出

onhelp 当用户在浏览器是活动窗口时按F1键时触发。

的onkeydown 用户按下某个键时触发。

onkeypress事件 用户按下字母数字键时触发。

的onkeyup 用户释放密钥时触发。

onlayoutcomplete 当打印或打印预览布局过程完成使用源文档中的内容填充当前LayoutRect对象时触发。

的onload 从服务器完全接收到对象时引发。

的onload 浏览器加载对象后立即触发。

onlosecapture 当对象失去鼠标捕获时触发。

的onMessage 当用户使用postMessage发送跨文档消息时触发。

onmousedown事件 用户使用鼠标按钮单击对象时触发。

OnMouseEnter在 当用户将鼠标指针移动到对象中时触发。

OnMouseLeave在 当用户将鼠标指针移动到对象边界之外时触发。

的OnMouseMove 用户将鼠标移到对象上时触发。

的onmouseout 当用户将鼠标指针移动到对象边界之外时触发。

的onmouseover 当用户将鼠标指针移动到对象中时触发。

onmouseup 当用户在鼠标悬停在对象上时释放鼠标按钮时触发。

onmousewheel 旋转滚轮按钮时触发。

onmove 当物体移动时触发。

onmoveend 当物体停止移动时触发。

onmovestart 当对象开始移动时触发。

onoffline Windows Internet Explorer脱机工作时触发。

ononline 在Internet Explorer联机工作时引发。

onpaste 当用户粘贴数据,将数据从系统剪贴板传输到文档时,在目标对象上触发。

onprogress 浏览器开始从服务器接收数据时引发。

onpropertychange 当属性在对象上发生更改时触发。

的onreadystatechange 当对象的状态发生变化时触发。

onreset 用户重置表单时触发。

在onResize 当对象的大小即将改变时触发。

onresizeend 当用户完成在控件选择中更改对象的尺寸时触发。

onresizestart 当用户开始在控件选择中更改对象的尺寸时触发。

onrowenter 触发以指示数据源中的当前行已更改,并且对象上有新数据值。

onrowexit 在数据源控件更改对象中的当前行之前触发。

onrowsdelete 在即将从记录集中删除行时触发。

onrowsinserted 在当前记录集中插入新行之后触发。

onscroll 当用户在对象的滚动条中重新定位滚动框时触发。

ONSELECT 当前选择发生变化时触发。

onselectionchange 当文档的选择状态发生变化时触发。

聚焦的时候 选择对象时触发。

的OnStart 在选框对象的每个循环开始时触发。

的onStop 当用户单击“停止”按钮或离开网页时触发。

onstorage 更新DOM存储区域时触发。

onstoragecommit 将本地DOM存储区域写入磁盘时触发。

的onsubmit 即将提交FORM时触发。

ontimeout 当出现阻止请求完成的错误时引发。

onunload的 在卸载对象之前立即触发。