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是非常宝贵的。干杯