Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/459.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 区分当前域和请求映像的域_Javascript_Jquery - Fatal编程技术网

Javascript 区分当前域和请求映像的域

Javascript 区分当前域和请求映像的域,javascript,jquery,Javascript,Jquery,我希望能够区分从当前域和外部域请求的图像,以处理画布和跨域请求。我目前正在代理所有绝对来源的图像,而不是使用 if ( $(this).attr('src').substr(0, 4) == 'http') { … 然而,这显然是低效的。区分当前域和其他域上的映像的最佳方法是什么?您可以根据地址栏中的内容测试映像src的主机名,如下所示: var hostname = window.location.hostname; $.each('img', function(){ if (ho

我希望能够区分从当前域和外部域请求的图像,以处理画布和跨域请求。我目前正在代理所有绝对来源的图像,而不是使用

if ( $(this).attr('src').substr(0, 4) == 'http') { …

然而,这显然是低效的。区分当前域和其他域上的映像的最佳方法是什么?

您可以根据地址栏中的内容测试映像src的主机名,如下所示:

var hostname = window.location.hostname;

$.each('img', function(){
    if (hostname !== $(this).attr('src')) 
    {
        $(this).attr('src', 'something-else');
    }
});
这是假设jQuery。您可能需要调整hostname/imgsrc或子字符串,以获得要测试的位


进一步阅读:

感谢rsplak、Felix Kling和jammypeach,我到达了那里。我为其他人提供的解决方案:

if (window.location.hostname !== this.src.split('/')[2]) { ...

只有当映像托管在解决问题的其他域上时,上述语句才会计算为true。

使用
this.src
而不是
$(this.attr('src')
对于一开始更有效…@rsplak:Afaik,
this.src
将始终返回完整的URL。你将无法再区分URL了。+1 Felix,我怎么会不知道呢?没有完全解决问题,但是
window.location.hostname
nod是非常宝贵的。干杯