偶然遇到js FireFox取不到img id

亮术网 2020-06-24 本网原创

在调试 Javascript 代码的过程中,遇到一个奇怪的问题,在 ie 下可以正常取到 img 的 src 属性值,但在 FireFox、Chrome、Safari 下都获取不到。经过调试发现,通过 document.getElementById 无法获取到 img 对象,把 Javascript 放到要获取的 img 后面也不行,说明不是未加载 img 问题,看具体情况。

 

1、FireFox 取不到img id 的具体情况

由于程序的开发需要,img 是在后台用 C# 输出的,代码如下:

1)html 代码:

<div id="img">
    <asp:Literal ID="litImg" runat="server" />
  </div>

<script type="text/javascript" language="javascript">
    document.getElementById("imgId").src;//获取不到 img 对象
  </script>

用 document.getElementById("imgId").getAttribute("src"),也不行。

 

2)后台代码(C#):

protected void Page_Load(object sender, EventArgs e)
  {
    //输出 img
    litImg.Text = "<a href=\"#\" target=\"_blank\"><img id=\"imgId\" src=\"/images/prod.jpg\" /></a>";
  }

疑点:如果不是在后台输出,而是直接把 img 写到前台(<img id="imgId" src="/images/prod.jpg" />),却可以获到。

 

3)说明一点

把这段代码放到一个新建的 aspx 文件中,却可以获取到 img 对象和 src。由此看来,应该是原来那个 aspx 文件中的某个未知元素影响到了FireFox、Chrome、Safari 获取 img 对象,由于程序的保密性,不能公开代码(代码也很多)。

 

2、解决办法

既然不能直接获取到 img 本身,可以先获取它的父对象,然后通过父对象来获取它,代码如下:

<div id="img">
    <asp:Literal ID="litImg" runat="server" />
  </div>

<script type="text/javascript" language="javascript">
    var obj = document.getElementById("img");//获取 img 的父对象
    var src = obj.getElementsByTagName("img")[0].src;//获取 img 的 src
  </script>

本文浓缩标签:FireFoximgjs