簡體   English   中英

為什么我不能使用IE7的相對URL?

[英]Why can't I use relative URLs with IE7?

我已經谷歌搜索了一段時間,似乎無法找到這個問題的答案。 我的問題如下:

對於我的jquery,我需要我的鏈接是相對的而不是絕對的。 我的PHP設置為返回相對URL並且一切正常,直到我在IE7中測試它。 出於某種原因,IE7不斷改變我的相對URL到abosulute,這打破了我的js腳本。 這是正常的嗎? 有辦法解決它嗎?

例如:

IE8,Chrome,Firefox,Safari等 -

<a href='/page' onclick='click_handler(this);return false;'>clicky</a>

IE7 -

<a href='http://www.myurl.com/page' onclick='click_handler(this);return false;'>clicky</a>

我所做的是在init處獲取baseUrl,如:

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

...然后在我的URL處理程序中,刪除baseUrl:

var url = $(this).attr("href").replace(baseUrl, "");

您還可以使用.support()檢查href是否“規范化”:

$.support.hrefNormalized

(如果瀏覽器在獲取href值時沒有進行任何修改,則返回true ,因此在IE中它當前為false。)

如果我是你,我會使用瀏覽器檢測並添加一個子句來將URL剝離到相對路徑。 我不是100%熟悉jQuery,但我想你可以通過簡單的拆分和重建或REGEX查詢來實現。

請參閱jQuery URL Parser插件: http//plugins.jquery.com/project/url_parser

看起來它與安全問題有關 - http://blogs.msdn.com/ie/archive/2005/08/15/452006.aspx

是的,似乎最好的方法是在jQuery中刪除域。 對於有類似問題的任何人,這是我的點擊事件處理程序的樣子:

var href_attr = element.getAttribute('href');
if (href_attr.indexOf('http://')>-1) {
    href_attr = href_attr.substr(location.href.length-1);
};

這是JKS答案的修改版本,它使用split而不是substring。 更優雅的IMO:

stripBaseUrl : function(url){
    var urlArray = url.split("/");
    return urlArray[urlArray.length - 1];
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM