相关疑难解决方法(0)

在我自己的对象中实现事件

我想要的是一个提供一些事件的自定义对象.例如:

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".但是这个功能是从"元素"正常实现的......

我可以以某种方式提供它们,还是我必须为自己实现它们?我该如何实施它们?我是否必须实施自己的事件处理?(具有处理程序的内部列表,"添加" - 和"删除" - 处理程序功能,并在我要触发事件时触发每个处理程序)

问候!

javascript javascript-events

9
推荐指数
1
解决办法
5810
查看次数

是否可以以编程方式触发拖动事件?

我目前正在使用库Draggabilly向我的应用程序添加拖放功能。我想要做的是drop在 CKEditor 的实例上触发事件(HTML5 原生事件),然后执行任务。这是我到目前为止想出来的:

  1. CKEditor 只会侦听原生 HTML5 事件,例如dragoverdrop
  2. Dragabilly 不会触发本机dragdrop事件。相反,它使用mousedownmouseup

我的问题是,有没有办法使用dispatchEvent或一些类似的方法来模拟dragstart,dragdrop事件?

如果除了我提到的这个问题之外还有更好的解决方案,请告诉我。

谢谢。

html javascript drag-and-drop

9
推荐指数
1
解决办法
1万
查看次数

如何在空的 td 标签上从 javascript(不是 jquery)手动触发 onmousedown 事件

我想使用 java 脚本但不使用 jquery 在空的 td 标签上触发 ommousedown 事件。任何建议请

javascript

7
推荐指数
1
解决办法
2万
查看次数

如何在IE8中生成具有特定键码的键盘事件?

我需要使用本机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

6
推荐指数
1
解决办法
1万
查看次数

使用jQuery触发真实事件

似乎jQuery trigger()只运行与jQuery绑定的事件处理程序.我有一些使用本机浏览器事件绑定的模块.使用/sf/answers/187356921/中的代码对我有用,但我想知道jQuery中是否有内置的东西会这样做?

从评论更新: 显然它适用于按钮上的点击事件.但不适用于选择框上的更改事件:http://jsfiddle.net/qxpXV/2/

对于记录:黑客攻击其他库与jQuery 进行绑定确实trigger()有效,但我真的不想这样做.

javascript jquery javascript-events

6
推荐指数
1
解决办法
734
查看次数

在以编程方式更改html选择下拉列表后,onchange不会触发

我有一个内部选择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有关,但我没有发现任何信息说我不能这样做,也没有任何解释如何解决它.

有任何想法吗?

html javascript dojo

6
推荐指数
1
解决办法
2万
查看次数

在Javascript中模拟鼠标单击

寻找在ID或CLASS名称标识的图像/按钮上单击鼠标左键的Javascript,等待x秒并重复.并且能够在开发人员工具中运行Console tap,在chrome和firefox中.

试图自己写,因为我认为这将是一个简单的代码,但经过2个小时的试验和错误没有运气,我开始用尽选项.

希望Javascript专家有时间帮助一个非常新手的用户;)

谢谢

javascript

6
推荐指数
1
解决办法
2万
查看次数

从webview中捕获本机后退按钮事件

我是网络视图的新手,并尝试使用它来做一个应用程序.我有一个使用javascript显示的弹出窗口.它有一个关闭按钮.除了关闭按钮,我想使用本机后退按钮.

也就是说,如果用户单击后退按钮,则应关闭我的弹出窗口.

我的疑问是,它是否需要本机应用程序的任何更改?或者webviews将后退按钮操作转换为webview可以理解的按键等事件?

javascript webview android-webview

6
推荐指数
1
解决办法
3711
查看次数

填写表单的脚本执行速度比onchange()更快,可以显示表单的选项

我正在使用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 forms

6
推荐指数
1
解决办法
203
查看次数

有什么方法可以在开发人员工具中模拟onmouseover吗?

我知道Firefox提供了一种模拟悬停,活动和焦点过滤器的方法。

在此处输入图片说明

有什么方法可以模拟onmouseover高程?

我想一起模拟两个元素,这可能吗?

我没有为此目的找到任何扩展。先感谢您。

javascript firefox onmouseover firefox-developer-tools

5
推荐指数
2
解决办法
1397
查看次数