当前位置: 首页 > 面试题库 >

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

黄俊誉
2023-03-14
问题内容

我有一个非常棘手的问题,我希望有人能对此有所启发。我正在使用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

Internet Explorer 8或更高版本。 在IE8模式下, HREF
的值取决于对该属性的引用的上下文。当作为文档对象模型(DOM)属性读取时, HREF
返回相对于承载网页的域的URL。当以较早的文档兼容模式显示页面时,或者使用较早版本的浏览器查看页面时, HREF
作为内容属性读取时,将返回页面作者指定的值。有关更多信息,请参见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, "");


 类似资料:
  • 我收到这个错误消息 无法解析符号验证Android XML文件中的资源引用。 而且,我也得到了一个类似的错误 无法解析符号“@style/textappalance.appcompat.headline” 验证Android XML文件中的资源引用。 任何指针都会很棒!谢谢你!它似乎与此线程有关,但没有提供解决方案:

  • GSON不是在一开始就解析我传递的整个JSON字符串吗?因此,最终,我希望新的数据源是对象。那可行吗?

  • 我希望有人能帮我解决这个问题。 我想用WebClient创建一个Rest客户端,从API中检索响应。所以我创建了我的Spring项目,添加了webflux、lombok和h2。我还创建了一个DTO类“CashAccount”和以下方法: 当我使用“.bodyToMono(String.class)”时,所有的功能都很好,我收到了结果: 相反,当我使用“.bodyToMono(cashcount.c

  • 我试图获取一个JSON响应,并将结果存储在一个变量中。我在以前的Swift版本中使用过这个代码版本,直到Xcode8的GM版本发布。我在StackOverflow上看了几篇类似的文章:Swift 2 Parsing JSON-Cant下标类型为“anyObject”的值和Swift 3中的JSON Parsing。 然而,这里所传达的思想似乎不适用于这种情况。 如何正确解析Swift3中的JSON

  • 我有一个简单的rest服务来存储时间范围,然而,Spring不能正确解析带有时区的datetime格式。 该实体是

  • 我不知道为什么我的json解析不起作用。这是我正在使用的Api。还有完整json输出的链接http://api.openweathermap.org/data/2.5/forecast/daily?zip=85008 我试图得到每天的最低和最高温度。这是我的代码。引发的异常应该是BEGIN_OBJECT,但在第1行第190列编号。任何帮助不胜感激,谢谢!