【问题标题】:Why is Jquery prepending img src with window url?为什么 Jquery 在 img src 前面加上窗口 url?
【发布时间】:2014-01-14 16:38:27
【问题描述】:

所以我有这个简单的代码:

var openPopUp = function(_type, _src) {
    $(_type).bind('click', function(e) {
        e.preventDefault();
        $('#img_pop_up').bPopup({
            onOpen: function() {
                console.log(document.getElementById("jpg_pop_up")['src']);
                $("#jpg_pop_up").attr("src",_src);
                /*$("#jpg_pop_up").attr("src","http://freefever.com/stock/2013-abstract-hd-wallpaper.jpg");*/
            }
        });
    });
}

评论中提到的行工作正常,但是当我将变量作为 _src 传递时,它会在 src 前面加上 window.location url,然后尝试获取图像。就像http://myserver.com/http://image_url/ 知道为什么吗?我正在传递绝对网址。当我执行 console.log(_src) 时,它可以很好地打印完整的 url,但是当我打印时

console.log(document.getElementById("jpg_pop_up")['src']);

这会打印我的窗口位置 url!它应该为空。

当我对 url 的路径进行硬编码时,它可以正常工作,但是当我使用变量传递路径时,它会将其假定为相对路径。

【问题讨论】:

  • 你可以做一个 src 的子字符串
  • 您确定不在您的 hmtl 中设置<base href=""> 吗? -> 例如jsfiddle.net/vCJef
  • @Frogmouth 不,没有基本的 href 设置。可以是因为它使用了一个 bpopup jquery,它为提到的 div 弹出一个不同的模型和一些范围变化吗?
  • 这一切与 angularjs 有什么关系?
  • @Stewie 因为我的函数触发器来自 Angular js 部分,所以我想这是否与某处有关。

标签: javascript jquery


【解决方案1】:

试试这个:

console.log(document.getElementById('jpg_pop_up').getAttribute("src"));

这里的重要区别是src 属性 包含您提供的内容,但src 属性 包含完全解析的 URL。

【讨论】:

  • 所以 console.log(document.getElementById('jpg_pop_up').getAttribute("src"));按预期打印 null 但使用与我尝试将值设置为 document.getElementById('jpg_pop_up').setAttribute("src",_src) 相同的方式,但它再次以 localhost:.../http://img_url 开头
猜你喜欢
  • 1970-01-01
  • 2010-12-22
  • 1970-01-01
  • 2021-09-08
  • 1970-01-01
  • 2011-12-05
  • 1970-01-01
  • 2016-02-19
  • 2011-05-04
相关资源
最近更新 更多