标签: events

在C#中引发事件的单元测试

我有一些引发PropertyChanged事件的代码,我希望能够对事件正确引发的单元测试.

提升事件的代码就像

public class MyClass : INotifyPropertyChanged
{
   public event PropertyChangedEventHandler PropertyChanged;  

   protected void NotifyPropertyChanged(String info)
   {
        if (PropertyChanged != null)
        {
            PropertyChanged(this, new PropertyChangedEventArgs(info));
        }
   }  

   public string MyProperty
   {
       set
       {
           if (_myProperty != value)
           {
               _myProperty = value;
               NotifyPropertyChanged("MyProperty");
           }
       }
   }
}
Run Code Online (Sandbox Code Playgroud)

我从单元测试中的以下代码中获得了一个很好的绿色测试,它使用了委托:

[TestMethod]
public void Test_ThatMyEventIsRaised()
{
    string actual = null;
    MyClass myClass = new MyClass();

    myClass.PropertyChanged += delegate(object sender, PropertyChangedEventArgs e)
    {
         actual = e.PropertyName;
    };

    myClass.MyProperty = "testing";
    Assert.IsNotNull(actual);
    Assert.AreEqual("MyProperty", actual); …
Run Code Online (Sandbox Code Playgroud)

c# events unit-testing

151
推荐指数
4
解决办法
7万
查看次数

mouseover和mouseenter事件有什么区别?

我一直使用这个mouseover事件,但在阅读我发现的jQuery文档时mouseenter.它们似乎完全相同.

这两者之间是否存在差异?如果是,我应该何时使用它们?
(也适用于mouseoutvs mouseleave).

javascript jquery events javascript-events

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

删除使用bind添加的事件侦听器

在JavaScript中,使用bind()删除作为事件侦听器添加的函数的最佳方法是什么?

(function(){

    // constructor
    MyClass = function() {
        this.myButton = document.getElementById("myButtonID");
        this.myButton.addEventListener("click", this.clickListener.bind(this));
    };

    MyClass.prototype.clickListener = function(event) {
        console.log(this); // must be MyClass
    };

    // public method
    MyClass.prototype.disableButton = function() {
        this.myButton.removeEventListener("click", ___________);
    };

})();
Run Code Online (Sandbox Code Playgroud)

我能想到的唯一方法就是跟踪每个添加了bind的侦听器.

以上示例使用此方法:

(function(){

    // constructor
    MyClass = function() {
        this.myButton = document.getElementById("myButtonID");
        this.clickListenerBind = this.clickListener.bind(this);
        this.myButton.addEventListener("click", this.clickListenerBind);
    };

    MyClass.prototype.clickListener = function(event) {
        console.log(this); // must be MyClass
    };

    // public method
    MyClass.prototype.disableButton = function() {
        this.myButton.removeEventListener("click", this.clickListenerBind);
    };

})();
Run Code Online (Sandbox Code Playgroud)

有没有更好的方法来做到这一点?

javascript events bind listener

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

检测浏览器自动填充

如何判断浏览器是否自动填充了文本框?特别是使用自动填充页面加载的用户名和密码框.

我的第一个问题是在页面加载序列中何时发生这种情况?是在document.ready之前还是之后?

其次,我如何使用逻辑来确定是否发生这种情况?它不是我想阻止这种情况发生,只是挂钩事件.最好是这样的:

if (autoFilled == true) {

} else {

}
Run Code Online (Sandbox Code Playgroud)

如果可能的话,我很乐意看到一个jsfiddle显示你的答案.

可能重复

浏览器密码自动填充的DOM事件?

浏览器自动填充和Javascript触发事件

- 这些问题并没有真正解释触发了什么事件,他们只是不断重新检查文本框(不利于性能!).

javascript jquery events autofill event-handling

147
推荐指数
12
解决办法
14万
查看次数

IFRAME加载完成后的Javascript回调?

我需要在IFRAME加载完成后执行回调.我无法控制IFRAME中的内容,因此我无法从那里触发回调.

这个IFRAME是以编程方式创建的,我需要将其数据作为回调中的变量传递,并销毁iframe.

有任何想法吗?

编辑:

这就是我现在拥有的:

function xssRequest(url, callback)
{
    var iFrameObj = document.createElement('IFRAME');
    iFrameObj.src = url;            
    document.body.appendChild(iFrameObj);   

    $(iFrameObj).load(function() 
    {
        document.body.removeChild(iFrameObj);
        callback(iFrameObj.innerHTML);
    });
}
Run Code Online (Sandbox Code Playgroud)

在iFrame加载之前进行此回调,因此回调没有返回数据.

javascript iframe events dom

145
推荐指数
7
解决办法
26万
查看次数

如何捕获浏览器窗口关闭事件?

我想捕获浏览器窗口/选项卡关闭事件.我用jQuery尝试了以下内容:

jQuery(window).bind(
    "beforeunload", 
    function() { 
        return confirm("Do you really want to close?") 
    }
)
Run Code Online (Sandbox Code Playgroud)

但它也适用于表单提交,这不是我想要的.我想要一个仅在用户关闭窗口时触发的事件.

javascript browser jquery events

142
推荐指数
5
解决办法
37万
查看次数

C#:提升继承的事件

我有一个包含以下事件的基类:

public event EventHandler Loading;
public event EventHandler Finished;
Run Code Online (Sandbox Code Playgroud)

在继承自此基类的类中,我尝试引发事件:

this.Loading(this, new EventHandler()); // All we care about is which object is loading.
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

事件'BaseClass.Loading'只能出现在+ =或 - =(BaseClass')的左侧

我假设我不能像其他继承的成员一样访问这些事件?

c# events inheritance

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

如何在C#中清除事件订阅?

参加以下C#课程:

c1 {
 event EventHandler someEvent;
}
Run Code Online (Sandbox Code Playgroud)

如果有很多订阅c1someEvent事件,我想清除所有这些,那么实现这一目标的最佳方法是什么?还要考虑对此事件的订阅可以是lambdas/anonymous delegates.

目前我的解决方案是添加一个ResetSubscriptions()方法,将c1其设置someEvent为null.我不知道这是否有任何看不见的后果.

.net c# events delegates

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

phantomjs不等待"完整"页面加载

我正在使用PhantomJS v1.4.1来加载一些网页.我没有访问他们的服务器端,我只是获得指向他们的链接.我正在使用Phantom的过时版本,因为我需要在该网页上支持Adobe Flash.

问题是许多网站正在加载他们的次要内容异步,这就是为什么Phantom的onLoadFinished回调(HTML中的onLoad的模拟)在没有任何东西仍然加载时过早发生的原因.任何人都可以建议我如何等待网页的完整加载,例如,包含广告等所有动态内容的屏幕截图?

javascript events phantomjs

136
推荐指数
8
解决办法
14万
查看次数

你如何检测清除"搜索"HTML5输入?

在HTML5中,search输入类型在右侧显示一个小X,将清除文本框(至少在Chrome中,可能是其他文件框).有没有办法检测这个X在javascript或jQuery中被点击的时间,比如检测到什么时候单击该框或进行某种位置点击检测(x-position/y-position)?

javascript jquery events html5 javascript-events

135
推荐指数
7
解决办法
8万
查看次数