我试图从浏览器手动触发cordova中的事件(后退,暂停,恢复等)(用于调试).我是按照以下方式进行的:
$(window).trigger('backbutton');
Run Code Online (Sandbox Code Playgroud)
当我们使用注册事件处理程序时 $(document).on('backbutton', handlerCode);
backbutton事件被触发,但是当我们使用cordova文档中的语法注册它时
document.addEventListener("backbutton", onBackKeyDown, false);
Run Code Online (Sandbox Code Playgroud)
事件处理程序未被触发.我在使用时注意到这一点$(window).trigger('backbutton'),代码没有点击cordova.js文件.从浏览器调用cordova应用程序中的事件的正确方法是什么?
我正在听自定义事件:
evt = new CustomEvent("fileThisEmail", {
detail: {
name: name,
email: email,
content: content
}
});
window.dispatchEvent(evt);
window.addEventListener("fileThisEmail", this.handleFileEmail);
Run Code Online (Sandbox Code Playgroud)
我需要删除监听器.我试过了:
window.removeEventListener("fileThisEmail", this.handleFileEmail);
window.removeEventListener("fileThisEmail");
Run Code Online (Sandbox Code Playgroud)
但都没有工作.我究竟做错了什么?
Fullcalendar.js点击即可获得当天的活动
是否可以获取我在月视图中单击的所有事件并将其打印在任何div元素中Fullcalendar.js?
这是我的JSFiddle:
我已将div事件添加到div中
div.addEventListener('click', function(event) { ... });
稍后,我使用innerHTML动态添加一个范围。
div.innerHTML = "<span>some text</span>"
现在,文本不可单击,这使我感到惊讶,因为我认为click事件将传播并触发父div上的click处理程序。到底是怎么回事?
我已经用jsfiddle重新创建了问题。我不明白发生了什么。
我有一个文本框,当单击一个元素时,它会自动聚焦jQuery:
my_item.find('input').focus();
Run Code Online (Sandbox Code Playgroud)
它按预期在Firefox和Chrome中运行:输入区域是聚焦的,我可以开始输入它.在Safari中,行为是不同的.我点击元素,输入被聚焦,我开始在框中输入,它只允许我键入一个字符.输入第一个输入字符后,输入框失去焦点,进一步输入不起作用,除非再次手动点击进行焦点.
我发现了有关focus()Safari和Safari工作的疑问,但我认为这是一个不同的问题.我已经尝试了那里提出的解决方案,例如e.preventdefault()在mouseup和类似的情况下,没有效果.
当我在Safari中输入时,如何让我的聚焦文本输入区域保持聚焦?
我在这样的对象中定义了我的函数:
_clickHandler: function(event){
event.preventDefault();
},
attachClickEv: function(element){
......
element.on('click', this._clickHandler);
},
Run Code Online (Sandbox Code Playgroud)
问题是我似乎无法将"this"传递给clickHandler函数
我知道我可以把它包装在另一个函数中
var tthis = this;
element.on('click', function(event){
tthis._clickHandler(event, tthis);
});
Run Code Online (Sandbox Code Playgroud)
但后来我不能解开这个功能
element.off('click', this._clickHandler);
Run Code Online (Sandbox Code Playgroud)
还有其他办法吗?
我正在创建一个Chrome扩展程序,用于检查是否存在"onmousedown"属性,如果有,我将执行一些代码.
我试过这个,但它不起作用.
document.addEventListener("onmousedown", function() {
});
Run Code Online (Sandbox Code Playgroud) 我正在向所有与我正在创建的JS模块的一部分匹配特定选择器的链接添加一个click事件.它看起来像这样.
var Lightbox = (function () {
var showLightbox = function () {
// this does stuff
};
var init = function () {
var links = document.querySelectorAll(options.selector);
for(var i = 0; i < links.length; i++) {
links[i].addEventListener('click', function() {
showLightbox();
}, false);
}
};
return {
init: init
};
})();
Lightbox.init();
Run Code Online (Sandbox Code Playgroud)
首次加载页面上与选择器工作匹配的任何链接.还有一种closeLightbox()方法可以正常工作.但是,当第二次单击链接时没有任何反应.我没有控制台错误 - 努法.
添加事件监听器时,我有什么问题吗?
编辑:我已经更新了代码,删除了一些冗余的方法,并在此处粘贴了完整的代码:http://pastebin.com/mC8pSAV2
我正在通过angular.bootstrapping它使用Angular模块将一个非角度的网页转换为Angular版本.除了需要与页面的其他部分进行通信之外,它工作得很好.不幸的是,我目前无法将页面的其余部分转换为Angular.
到目前为止,我想要做到这一点的最好方法是在bootstrapped元素上触发包含我需要通信的信息的vanilla JS事件.
是否有既定的模式或更好的方法来做到这一点?
javascript communication javascript-events angularjs angularjs-directive
HTML
<form>
<input type='text'>
<button type='submit'>Submit</button>
</form>
Run Code Online (Sandbox Code Playgroud)
JavaScript的
$('form').on('submit', function(e) {
alert('submit');
e.preventDefault();
});
$('button').on('click', function(e) {
e.stopPropagation();
alert('clicked');
});
Run Code Online (Sandbox Code Playgroud)
观看精彩的视频后在这里,我明白,当我点击提交按钮,事件冒泡到窗体,然后将表单提交事件被触发.这解释了为什么在"提交"之前警告"点击"(在我添加e.stopPropagation()到按钮处理程序之前).
但是当我添加e.stopPropagation()到按钮处理程序时,"提交"仍然会被警告.为什么?我认为这stopPropagation可以防止事件冒泡到form,所以form.on('submit')听众不应该"听到"一个事件.
javascript ×9
jquery ×4
events ×2
angularjs ×1
calendar ×1
cordova ×1
focus ×1
forms ×1
fullcalendar ×1
safari ×1