小编Mat*_*att的帖子

为什么我的事件处理程序会导致"不是函数"错误,但是可以从Firebug控制台运行?

使用JQuery 1.2.6,从Firefox 3和IE7进行测试.我有一个非常基本的JavaScript来重新加载验证码图像.在我的JS文件中,我有:

var Captcha = {
    count: 0,

    Refresh: function(){
        // Concatenate "count" to force a URL change, which forces the browser to reload the image
        $('#Captcha').attr('src', 'Captcha.aspx?' + Captcha.count);
        Captcha.count++;
    }
}
Run Code Online (Sandbox Code Playgroud)

我的链接如下:

<a href="javascript:void(0);" id="ChangeCaptcha" onclick="Captcha.Refresh();">Try a different image</a>
Run Code Online (Sandbox Code Playgroud)

当我点击链接时,我收到一个JavaScript错误.从Firefox的Firebug插件中,它说"Captcha.Refresh"不是一个功能.所以,我在同一个窗口中访问我的Firebug控制台,然后输入

Captcha
Run Code Online (Sandbox Code Playgroud)

我在响应行中得到一个"对象"(如预期的那样).然后我输入

Captcah.Refresh
Run Code Online (Sandbox Code Playgroud)

我在响应行中得到一个函数()(如预期的那样).然后我输入

Captcha.Refresh()
Run Code Online (Sandbox Code Playgroud)

它执行功能,更新我的验证码图像,一切都很花哨.如果我回去再次尝试链接,它仍然无效.如果我在控制台中键入Capcha.Refresh()而没有点击链接,它也可以正常工作.我到底在这里错过了什么?显然JS正在加载,但为什么函数调用不起作用?

javascript jquery

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

将Jabber/XMPP与其他系统集成(身份验证,密码共享)

是否可以指示jabber/xmpp服务器将身份验证委派给另一个模块?我们正在使用XMPP构建内部应用程序,如果我们可以让用户保留他们在我们的网络应用程序中使用的标准用户名/密码,那将是非常棒的.web-apps目前是散列密码,因此DB中的密码不以纯文本形式存储.如果不是这样,那么在系统之间共享密码会很容易,但当然,在服务器端数据库中存储纯文本密码是一个很大的禁忌.

理想情况下,我们可以告诉jabber服务器"嘿,只是将您的用户名/身份验证请求传递到此处"并运行其他进程(甚至只是一个xmpp bot?)来处理身份验证.

我们目前正在使用ejabberd作为我们的服务器,我相信它是用Erlang编写的.但我们并没有与ejabberd联系在一起.我知道XMPP是巨大的,并且在很大程度上是可扩展的 - 但我还没有找到任何有关服务器端可扩展身份验证的信息.

我在XMPP网站上找到了这个,但这似乎是在客户端和服务器之间协商身份验证的协议,而不是服务器上的实际身份验证机制.

关于如何在XMPP服务器和我们的其他系统之间合并身份验证方案的任何指针?


authentication xmpp

3
推荐指数
1
解决办法
2279
查看次数

C#继承和"this"关键字

我正在编写一些以前由其他开发人员编写的代码,我遇到了下面的代码块:

/// <summary>
/// Default Constructor.
/// </summary>
public Body(Revision parent)
{
  mContainer = parent;
  mSections = new ArrayList();
  mSummary = new ArrayList();
}

/// <summary>
/// Constructs a Body from specified ParseElement.
/// </summary>
/// <param name="parent">Revision container.</param>
/// <param name="elem">Source ParseElement.</param>
public Body(Revision parent, ParseElement elem) : this(parent)
{more constructing stuff}
Run Code Online (Sandbox Code Playgroud)

根据我的理解,重载的构造函数也会使用我发送的Revision调用默认构造函数,从而导致可以从重载的构造函数访问初始化的ArrayLists.这是正确的,还是我完全糊涂了?

c# inheritance overloading

3
推荐指数
1
解决办法
1824
查看次数

"这个"在下面的javascript中代表什么?

(对不起,thisjavascript中的另一个问题.)

我有下面的代码,我想知道在最后的电话中,"这个"代表什么 - 窗口还是鸟?

var Bird = (function () {
    Bird.name = 'Bird';

    function Bird(name) {
        this.name = name;
    }

    Bird.prototype.move = function (feet) {
        return alert(this.name + (" flew" + feet + "ft."));
    };

    return Bird;

}).call(this);
Run Code Online (Sandbox Code Playgroud)

javascript this call

3
推荐指数
2
解决办法
349
查看次数

链接 LINQ 语句是否会导致多次迭代?

链接 LINQ 语句是否会导致多次迭代?

例如,假设我想使用 where 子句过滤数据,然后对匹配项进行求和:

int total = data.Where(item => item.Alpha == 1 && item.Beta == 2)
    .Sum(item => item.Qty);
Run Code Online (Sandbox Code Playgroud)

这是否会导致数据的单次交互,从而与此等效?

int total = 0;
foreach (var item in data)
    if (item.Alpha == 1 && item.Beta == 2)
        total += 1;
Run Code Online (Sandbox Code Playgroud)

或者,是否迭代data一次,和第二次的结果where做求和?

linq performance

3
推荐指数
1
解决办法
922
查看次数

程序终止自己进程的正确方法是什么(Windows)

C#.NET 3.5

我有一个控制台应用程序,由计算机上的另一个应用程序调用.此控制台应用程序连续运行,并从"父"进程侦听stdin上的数据.

但是,当父项被停止或终止时,它启动的控制台应用程序将继续.在正常情况下,它使用最少的资源来等待来自stdin的输入.然而,一旦父母离开,这个控制台应用程序就会激活CPU,并使其运行的核心匮乏,利用率接近100%.这一直持续到我手动终止进程.

理想情况下,主叫父母会自行清理,特别是因为这是在正常(非特殊)"停止"条件下发生的.不幸的是,这个父进程不在我手中.

我的第一个想法是从控制台应用程序中获取调用父级,并监视其PID.如果父进程消失,我的控制台应用程序将自行终止.目前,我这样做:

Process process = Process.GetCurrentProcess();
m_ParentPID = 0;
using (ManagementObject mgmtObj = new ManagementObject("win32_process.handle='" +     process.Id.ToString() + "'"))
{
    mgmtObj.Get();
    m_ParentPID = Convert.ToInt32(mgmtObj["ParentProcessId"]);
}
string parentProcessName = Process.GetProcessById(m_ParentPID).ProcessName;
Log("Parent Process: " + parentProcessName + Environment.NewLine);

// Create a timer for monitoring self.
Timer timer = new Timer(new TimerCallback(sender =>
{
    if (m_ParentPID != 0)
    {
        Process parent = System.Diagnostics.Process.GetProcessById(m_ParentPID);
        if (parent == null)
        {
            Log("Parent process stopped/killed.  Terminating self.");
            System.Environment.Exit(0);
        }
    }
}));

// Kick …
Run Code Online (Sandbox Code Playgroud)

.net windows kill process terminate

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

Google Chrome是否支持socket.io?

我正在使用笔记本电脑上的node.js和socket.io制作小型多人游戏。有时,当我想测试某些多人游戏功能时,我会使用PC登录PC(PC和笔记本电脑已连接到LAN网络)。Socket.io连接到路由器的IP(196. ...)和端口8080。直到今天,一切正常,当我只是想看看它如何工作之后才更改任何内容-突然没有了。我首先在笔记本电脑上打开Goog​​le Chrome浏览器并登录,效果很好。然后,我在PC上打开了Google Chrome浏览器,并尝试进行连接,但该连接无法正常工作。首先,用户在表单中输入其名称和密码,然后单击登录按钮,该按钮将调用此功能:

          login = function()
          {
               var n = document.forms['logn']['name'].value;
               var p = document.forms['logn']['password'].value;              

            var socket = io.connect("http://192.168.0.13:8080");
            socket.emit("login", {n: n, p: p});

            socket.on("got", function(data){
                 if (data.good)
                 {
                      main(socket, n)
                 }
                 else
                 {
                      alert("Failed to log in.");
                 }
            });
          }
Run Code Online (Sandbox Code Playgroud)

当我调用函数get时,什么也没有发生。我注意到服务器记录类似于以下的消息:

设置请求GET /socket.io/1/websocket/

但是xhr-polling比websocket更常见。这就是我目前所知道的,而且在Firefox上一切正常,所以我认为这与Google Chrome有关。

当我尝试从PC登录时,服务器会记录日志:

调试-服务的静态/socket.io.js调试-客户端授权的
信息-握手授权的30836340583773206
调试-设置请求GET /socket.io/1/websocket/30836340583773206
调试-设置客户端的心跳间隔30836340583773206
调试-客户端授权进行
调试-设置请求GET /socket.io/1/xhr-polling/30836340583773206?t=1315509666877
调试-设置轮询超时
调试-丢弃传输
调试-清除客户端的心跳间隔30836340583773206
调试-提供服务的静态/socket.io.js

javascript google-chrome websocket node.js socket.io

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

jquery $ .post函数的结果数据

当我进行ajax调用时(参见下面的代码),什么是"数据".如何设置和获取数据

//  $.post()  
 $("#post").click(function(){  
     $("#result").html(ajax_load);  
     $.post(  
         loadUrl,  
         {language: "php", version: 5},  
         function(data){  
             $("#result").html(data);  
         },  
         "json"  
     );  
 });
Run Code Online (Sandbox Code Playgroud)

ajax jquery post json

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

在父类上调用静态方法时,父类可以推断出子类型(C#)的类型吗?

假设我们有2个类,Child,以及它继承的类,Parent.

class Parent
{
    public static void MyFunction(){}
}

class Child : Parent
{
}
Run Code Online (Sandbox Code Playgroud)

是否有可能在父类中确定如何调用该方法?因为我们可以用两种方式来称呼它:

Parent.MyFunction();
Child.MyFunction();
Run Code Online (Sandbox Code Playgroud)

我目前的方法是尝试使用:

MethodInfo.GetCurrentMethod().ReflectedType; // and
MethodInfo.GetCurrentMethod().DeclaringType;
Run Code Online (Sandbox Code Playgroud)

但两者似乎都返回父类型.

如果你想知道什么,我正在努力完成(为什么我违反了父母不应该对孩子有任何了解的基本OOP规则),这就是它的缺点(如果你想要,请告诉我)长版):

我有一个Model结构,表示我们持久存储到数据库的一些数据.所有这些模型都从一个抽象的Parent继承.此父实现了一些事件,例如SaveEvent,DeleteEvent等.我们希望能够订阅特定于该类型的事件.所以,即使事件在父母身上,我也希望能够做到:

Child.SaveEvent += new EventHandler((sender, args) => {});
Run Code Online (Sandbox Code Playgroud)

我有一切就绪,事件实际上由事件处理程序字典支持,按类型进行哈希处理.我需要做的最后一件事就是在做Child.SaveEvent时正确检测Child类型.

我知道我可以在每个子类中实现事件(甚至通过使用抽象来强制它),但是将它全部保存在父类中会很好,这是实际触发事件的类(因为它实现了公共保存/删除/更改功能).

c# inheritance static-methods .net-3.5

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

范围内的构造函数

我有一个名为SlideShow的构造函数实例,我想知道关键字var的变量范围是什么.我理解这指的是对象本身但不确定itemWidth的范围.我假设它的本地函数,但如果函数是全局的,这是否意味着它内部的var也是?可以从其他任何地方访问var itemWidth吗?

function SlideShow( width, height ){
  this.width = width;
  this.height = height;
  var itemWidth = 400;  
}
Run Code Online (Sandbox Code Playgroud)

我假设update方法中的var是对象的一部分,原型对象对于该函数是本地的而不是全局的.

SlideShow.prototype.update = function( dir ){
        var dir = value;
}
Run Code Online (Sandbox Code Playgroud)

javascript

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