我想要的是一个提供一些事件的自定义对象.例如:
var CustomObjectTextChangedEventName = 'textChanged';
var CustomObject = function () {
var _this = this;
var _text = "";
_this.OnTextChanged = document.createEvent("Event");
_this.OnTextChanged.initEvent(CustomObjectTextChangedEventName, true, false);
_this.ChangeText = function (newText) {
_text = newText;
fireTextChanged();
};
function fireTextChanged() {
_this.dispatchEvent(_this.OnTextChanged);
}
}
Run Code Online (Sandbox Code Playgroud)
使用该事件的代码如下所示:
myCustomObject = new CustomObject();
myCustomObject.addEventListener(CustomObjectTextChangedEventName, handleTextChanged, false);
Run Code Online (Sandbox Code Playgroud)
正如您所看到的......在JS中使用事件的默认方式.但我不能让它变得烦人......
目前我的问题是我的对象没有实现"addEventListener"和"dispatchEvent".但是这个功能是从"元素"正常实现的......
我可以以某种方式提供它们,还是我必须为自己实现它们?我该如何实施它们?我是否必须实施自己的事件处理?(具有处理程序的内部列表,"添加" - 和"删除" - 处理程序功能,并在我要触发事件时触发每个处理程序)
问候!
我目前正在使用库Draggabilly向我的应用程序添加拖放功能。我想要做的是drop在 CKEditor 的实例上触发事件(HTML5 原生事件),然后执行任务。这是我到目前为止想出来的:
dragover
和drop。drag和drop事件。相反,它使用mousedown和mouseup。我的问题是,有没有办法使用dispatchEvent或一些类似的方法来模拟dragstart,drag和drop事件?
如果除了我提到的这个问题之外还有更好的解决方案,请告诉我。
谢谢。
我想使用 java 脚本但不使用 jquery 在空的 td 标签上触发 ommousedown 事件。任何建议请
我需要使用本机DOM函数(没有jQuery)在IE 8中生成keyup事件.以下代码生成,触发并接收事件,但keyCode始终为0.如何正确传递keyCode?
<form><input id="me" type="submit" /></form>
<script type="text/javascript">
var me = document.getElementById("me");
me.attachEvent("onkeyup", function(e) {
alert(e.keyCode); // => 0
});
document.getElementById("me").fireEvent('onkeyup', 13);
</script>
Run Code Online (Sandbox Code Playgroud) javascript dom keyboard-events internet-explorer-8 dom-events
似乎jQuery trigger()只运行与jQuery绑定的事件处理程序.我有一些使用本机浏览器事件绑定的模块.使用/sf/answers/187356921/中的代码对我有用,但我想知道jQuery中是否有内置的东西会这样做?
从评论更新: 显然它适用于按钮上的点击事件.但不适用于选择框上的更改事件:http://jsfiddle.net/qxpXV/2/
对于记录:黑客攻击其他库与jQuery 进行绑定确实trigger()有效,但我真的不想这样做.
我有一个内部选择HTML
<select id="league" name="league">
Run Code Online (Sandbox Code Playgroud)
我正在听我的javascript里面的变化.
var league = dojo.byId("league");
dojo.connect(league, "onchange", function (evt) { //do stuff }
Run Code Online (Sandbox Code Playgroud)
哪个工作正常.但是,我有一个链接,我可以点击更新选择:
<a href=javascript:void(0) onclick="updateSelection(league);"> League </a>
Run Code Online (Sandbox Code Playgroud)
链接工作,因为它使用以下函数更新选择的选定值.
function updateSelection(NewLeague){
dojo.byId('league').value = NewLeague; // works
dojo.byId('league').onChange; //this isnt working
//dojo.byId('league').onChange(); //this throws: TypeError: dojo.byId("league").onChange is not a function
}
Run Code Online (Sandbox Code Playgroud)
我的问题,正如我通过其他堆栈帖子阅读的那样,以编程方式更新值不会触发onChange,因此我需要在代码中调用onchange(如上所示).根据内联注释,onChange未被触发或抛出错误.我首先想到的是它与侦听onChange的dojo.Connect有关,但我没有发现任何信息说我不能这样做,也没有任何解释如何解决它.
有任何想法吗?
寻找在ID或CLASS名称标识的图像/按钮上单击鼠标左键的Javascript,等待x秒并重复.并且能够在开发人员工具中运行Console tap,在chrome和firefox中.
试图自己写,因为我认为这将是一个简单的代码,但经过2个小时的试验和错误没有运气,我开始用尽选项.
希望Javascript专家有时间帮助一个非常新手的用户;)
谢谢
我是网络视图的新手,并尝试使用它来做一个应用程序.我有一个使用javascript显示的弹出窗口.它有一个关闭按钮.除了关闭按钮,我想使用本机后退按钮.
也就是说,如果用户单击后退按钮,则应关闭我的弹出窗口.
我的疑问是,它是否需要本机应用程序的任何更改?或者webviews将后退按钮操作转换为webview可以理解的按键等事件?
我正在使用Javascript书签来自动填写页面上的表单.给出的一些选项是下拉选项,根据使用onchange()选择的内容显示不同的选项.我有类似这样的代码:
/* Gets first drop down and sets value to first in list */
var dropDown1 = document.getElementById("dropDown1Name");
dropDown1.value = "option1InDropDown";
dropDown1.onchange();
/* Sets value of second drop down to option that is available when first option in first drop down is selected */
var dropDown2 = document.getElementById("dropDown2Name");
dropDown2.value = "optionRevealedByDropDown1Change";
Run Code Online (Sandbox Code Playgroud)
但是这不起作用,因为onchange()在我将其设置为值时不会填充第二个下拉列表.当脚本完成执行时,dropDown2中没有设置值.我已经尝试了几种方法使代码"等待"但我无法找到正确的解决方案.任何建议表示赞赏.
javascript ×10
html ×2
dojo ×1
dom ×1
dom-events ×1
firefox ×1
forms ×1
jquery ×1
onmouseover ×1
webview ×1