有没有办法将一些HTTP服务器事件传递到单个javascript函数中?

有没有办法将一些HTTP服务器事件传递到单个javascript函数中?,javascript,html,httpexception,Javascript,Html,Httpexception,我有一个C#Web服务器,它向基于浏览器的客户端提供一些html/js/css和图像 我使用javascript动态创建页面,在接收来自websocket C#服务器的消息时填充图像和div 有时,我从websocket收到一条消息,并尝试访问Web服务器中可能受保护的资源 我有一些用于此的自定义http服务器事件(例如406),因为不是这样 我想知道是否有一种方法可以将所有406个事件引导到同一个函数中,比如 RegisterHttpEventHandler(406,myFunction);

我有一个C#Web服务器,它向基于浏览器的客户端提供一些html/js/css和图像

我使用javascript动态创建页面,在接收来自websocket C#服务器的消息时填充图像和div

有时,我从websocket收到一条消息,并尝试访问Web服务器中可能受保护的资源

我有一些用于此的自定义http服务器事件(例如406),因为不是这样

我想知道是否有一种方法可以将所有406个事件引导到同一个函数中,比如

RegisterHttpEventHandler(406,myFunction);
我想我可以在try-and-catch中包装任何请求/动态负载,尽管我希望有一种更干净的方法

编辑

这里是一个我到目前为止实现的工作流示例,它运行良好

// Websocket definition
var conn = new WebSocket('ws://' + addressIP);
// Websocket receiver callback

conn.onmessage = function (event) {
        // my messages are json-formatted
        var mObj = JSON.parse(event.data);
        // check if we have something nice
        if(mObj.message == "I have got a nice image for you"){
        showImageInANiceDiv(mObj.ImageUrl);
        }
    };

// Dynamic load image
function showImageInANiceDiv(imgUrl )
{
    var imgHtml = wrapUrlInErrorHandler(imgUrl);
    $("#imageBox").html(imgHtml);
}    

// function to wrap everything in an error handler
function wrapUrlInErrorHandler(Url)
{
    return '<img src="' + Url + '" onerror="errorHandler(\''+ Url +'\');"/>';
}

// function to handle errors
function errorHandler(imgUrl)
{
     console.log("this guy triggered an error : "  + imgUrl);
}




//
//Websocket定义
var conn=新的WebSocket('ws://'+地址IP);
//Websocket接收器回调
conn.onmessage=函数(事件){
//我的消息是json格式的
var mObj=JSON.parse(event.data);
//看看我们有没有好东西
if(mObj.message==“我给你拍了一张好照片”){
showmageinaicediv(mObj.ImageUrl);
}
};
//动态载荷图像
函数showImageInAliceDiv(imgUrl)
{
var imgHtml=wrapUrlInErrorHandler(imgUrl);
$(“#imageBox”).html(imgHtml);
}    
//函数将所有内容包装到错误处理程序中
函数wrapUrlInErrorHandler(Url)
{
返回“”;
}
//函数来处理错误
函数errorHandler(imgUrl)
{
log(“这家伙触发了一个错误:+imgUrl”);
}
//
OneError没有告诉我失败的原因,所以我必须做一个XHR来找出原因。那是件小事

你可以先试试XHR。如果失败,您知道发生了什么,如果成功,您可以从缓存中显示图像(另请参见)。当然,您也可以让它为特殊的状态代码调用一些全局定义的自定义钩子,但是您需要手动调用,因为没有预定义的全局事件源

我希望有一个类似document.onerror的处理程序,以避免每次在页面中放置图像时都使用wrapUrlInErrorHandler函数

那是不可能的。
error
事件(,)不冒泡,它直接且仅在
元素上激发。但是,如果不使用内联事件属性,您可以绕过丑陋的
wrapulinerrorhandler
,但是:


你能给我们看一下你的插座连接代码吗?我编辑了我的答案,添加了一些我正在做的代码示例。谢谢。因此,映像加载返回406,并且调用
onerror
处理程序失败?否。存在两个问题:onerror没有告诉我失败的原因,因此我必须进行XHR以查找原因。那是件小事。另一个问题是,我希望有一个类似document.onerror的处理程序,以避免每次我必须在页面中放置图像时都使用wrapUrlInErrorHandler函数。不要称包装器为“丑陋”,他特别敏感:)除了开玩笑,谢谢你的全面回答。我会采纳你的建议。
function showImageInANiceDiv(imgUrl) {
    var img = new Image();
    img.src = imgUrl;
    img.onerror = errorHandler; // here
    $("#imageBox").empty().append(img);
}
// function to handle errors
function errorHandler(event) {
     var img = event.srcElement; // or use the "this" keyword
     console.log("this guy triggered an "+event.type+": "  + img.src);
}