jQuery在IE中无法正确解析attr(“ href”)

我有一个非常棘手的问题,我希望有人能对此有所启发。我正在使用Jquery从另一个网站(我拥有)检索Http响应。收到DOM后,我将对其进行解析以获取某些信息。但是,当我尝试获取链接的href属性时,IE会将本地域添加到href的开头!

这是我的代码:

$.ajax({ 

type: "POST",

url: "MyPage.aspx/GetWebResponse",

data: "http://myWebSite/pages/AnotherPage.aspx",

contentType: "application/json; charset=utf-8",

dataType: "json",

asynch: false,

success: function(data)

{

var __htmlForMainPage = data.d;

var PageLink = $(__htmlForMainPage).find("a:contains('Get This Link')").attr("href");

}

});

我的变量PageLink应该是“ /pages/getThisPage.aspx?id=8347”。但是,它将作为“

http://myserver/pages/getThisPage.aspx?id =

8347 ”返回。

这仅在IE中发生。FireFox很好。仅当我将其放在服务器上时,也会发生这种情况。当我在本地运行它时,无论在IE中还是在FF中,一切都可以正常运行。但是,当我将其放在服务器上时,FF仍然可以正常工作,但是IE却不能。

有没有人看过这个,或者知道这里发生了什么?任何帮助是极大的赞赏!

回答:

在IE中访问元素的hrefDOM属性时A,它将返回url的绝对路径。getAttribute()在IE7及更低版本中也是如此(因为getAttribute直到IE8才被破坏)。

http://msdn.microsoft.com/zh-

CN/library/cc848861(VS.85).aspx:

在IE8模式下,

的值取决于对该属性的引用的上下文。当作为文档对象模型(DOM)属性读取时,

返回相对于承载网页的域的URL。当以较早的文档兼容模式显示页面时,或者使用较早版本的浏览器查看页面时,

作为内容属性读取时,将返回页面作者指定的值。有关更多信息,请参见Internet Explorer 8中的属性差异。

如果命名约定相同,jQuery将始终获取DOM属性:

// If applicable, access the attribute via the DOM 0 way

if ( name in elem && notxml && !special ) {

// ...

}

name in

elem这里的部分是检查是否已指定DOM属性。要针对IE8解决此问题,您可以将属性指定为大写.attr("HREF")--因为DOM属性区分大小写。不幸的是,IE7和更低版本的唯一解决方法是执行字符串替换:

var base = window.location.href.substring(0, window.location.href.lastIndexOf("/") + 1);

PageLink = PageLink.replace(base, "");

以上是 jQuery在IE中无法正确解析attr(“ href”) 的全部内容, 来源链接: utcz.com/qa/408173.html

回到顶部