Javascript是否可以用于检测重定向图像SRC(在任何流行浏览器中)?

Javascript是否可以用于检测重定向图像SRC(在任何流行浏览器中)?,javascript,dom,Javascript,Dom,我猜没有,但你永远不知道 浏览器加载 示例.net将lolcat.png重定向到http://static.example.net/bandwidth-exceeded.gif 我能检测到这个吗 跨浏览器并不重要,只是寻找一个可以在任何流行浏览器中使用的选项 到目前为止,我最好的选择是知道占位符图像的大小,通过查看图像大小onload(在支持图像标记中onload事件的浏览器中)得到一个“maybe”,并发出一个快速的XHR请求,通知后端我们有一个maybe。我不相信在事先不知道图像属性的情况下

我猜没有,但你永远不知道

  • 浏览器加载
  • 示例.net将
    lolcat.png
    重定向到
    http://static.example.net/bandwidth-exceeded.gif
  • 我能检测到这个吗

    跨浏览器并不重要,只是寻找一个可以在任何流行浏览器中使用的选项


    到目前为止,我最好的选择是知道占位符图像的大小,通过查看图像大小onload(在支持图像标记中onload事件的浏览器中)得到一个“maybe”,并发出一个快速的XHR请求,通知后端我们有一个maybe。

    我不相信在事先不知道图像属性的情况下用JavaScript检测重定向是可能的。无论是否重定向,当前DOM的src属性都将保持不变,因此该选项不可用

    我建议您在服务器上创建一个代理脚本,作为中间人。例如,您的图像标记看起来像(当然,使用合适的URL编码):

    
    
    您的代理脚本将在为映像提供服务之前检查标头是否存在重定向。它不是傻瓜式的,但它可以让你在第一次加载时缓存映像,这样你就不会从另一台机器上得到带宽限制错误

    如果只是出于您自己的目的,您可以在Internet Explorer中使用ActiveXObject来更详细地检查图像。但在细节上我帮不了你


    我假设在另一方允许的情况下,您可以热链接/缓存图像。

    我使用以下代码进行了检查:

    var a=new Image(); a.src='http://example.com/image.png';
    alert( a.width );
    
    在本例中,由于图像不存在,因此返回0

    在上个月,我发现了不少值得一看的房产。如果失败了,您可能需要研究jQuery和AJAX

    编辑
    在FirefoxFirebug上测试

    示例.net将lolcat.png重定向到

    什么是lolcat.png?我猜它是一个处理器,本质上它就是这样做的:


    如果是这样,请尝试重新编写Helicon的ISAPI URL,创建一个正则表达式规则,将查询字符串param附加到图像URL的末尾,作为问题的答案 Javascript是否可以用于检测重定向图像SRC(在任何流行浏览器中)?
    就像你说的那样简单,不!因为http没有任何标识重定向的选项。这类似于检测url重定向,这只是javascript的一个限制。

    对于纯javascript,这是不可能的。但是在服务器端脚本(比如PHP)的帮助下,它可以很容易地完成。我在上做了自己的免费服务,对解决简单的URL重定向很有用

    要使用它,请从头部部分中包括
    finalURL.js
    ,即

    如果您想自己托管后端PHP代码,请查看以下帖子:

    Mmmmm。。。有趣的问题。在这种情况下,
    src
    属性如何。它不应该改变吗?我现在不能测试。是的。。src属性总是返回它最初设置的值。你有一个重定向的示例图像,这样我就可以测试它了吗?嗯,这很有趣。当图像被重定向时,我希望得到的是大小而不是0。。。但也许图像能告诉我一些事情。看起来IE可能能够报告文件大小,这很有趣。下面是一个例子:被重定向到Sweet!认可的。编辑哦,等等。当我在Firebug中这样做时,第二个例子给出了240而不是0.hm。。我不知道你要去哪里-example.net是一些不受我控制的外部网站。所以你甚至不知道lolcat.png是什么?啊!它必须通过javascript吗?我在想,也许你可以为你的图像制作一个处理程序,然后尝试获取引用,例如:HttpContext.Current.Request.urlReferer().ToString(),如果必须通过javascript检测,也许你可以将引用值写入一个隐藏的html textbox.ps。我不确定引用是否允许你检测其是否来自重定向,但是如果它不是来自lolcat.png,那么你能假设它不是重定向吗?
    var a=new Image(); a.src='http://example.com/image.png';
    alert( a.width );
    
    var a=new Image(); 
    a.src='http://l.yimg.com/g/images/photo_unavailable_m.gif';
    console.log(a.width); // the image exists and returns 240
    
    var b=new Image(); 
    b.src='http://farm3.static.flickr.com/2560/4098180849_729ef4f6ef_m.jpg';
    console.log(b.width); // the image does not exist (re-direct) and returns 0
    
    <script src="http://finalurl.web44.net/finalURL.js"></script>
    
    var actualURL = finalURL( 'http://dummy.com/beforeRedirectURL.jpg' );