[英]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.