所以我使用的是jQuery History插件(http://tkyk.github.com/jquery-history-plugin/)。 另外,我编写了下面的脚本来切换页面。
$(document).ready(function() {
// Define the default pagetitle.
var defaultTitle = "MySite / ";
// Set a default pagetitle.
document.title = defaultTitle + "Homepage";
// Switch the page.
function load(page) {
$("#contentHolder").fadeOut("fast",function(){
$('#contentHolder').load("content/"+ page +".php");
$("#contentHolder").fadeIn("fast");
});
}
// Function to shorten the scriptsize.
function reduceSize(mainUrl) {
// Define the URL.
var url = mainUrl;
// Replace the URL in the address bar.
url = url.replace(/^.*#/, '');
// Load the page.
$.history.load(url);
return false;
}
// Enable history.
$.history.init(function(url) {
load(url == "" ? "general/homepage" : url);
});
// Make the menu useful.
$('.switch_homepage').live('click', function(e) {
reduceSize("general/homepage");
document.title = defaultTitle + "Homepage";
});
});
我的问题是每当我点击“主页”按钮时,页面都会切换到: http://www.domain.com/#general%2Fhomepage 虽然它应该切换到 http://www.domain.com/#general/homepage
有人能弄明白为什么它将斜杠转换为HTML格式吗?
感谢。
答案 0 :(得分:2)
查看插件源代码(https://raw.github.com/tkyk/jquery-history-plugin/master/jquery.history.js),看起来它正在为您进行编码。
function initObjects(options) {
options = $.extend({
unescape: false
}, options || {});
locationWrapper.encoder = encoder(options.unescape);
function encoder(unescape_) {
if(unescape_ === true) {
return function(hash){ return hash; };
}
if(typeof unescape_ == "string" &&
(unescape_ = partialDecoder(unescape_.split("")))
|| typeof unescape_ == "function") {
return function(hash) { return unescape_(encodeURIComponent(hash)); };
}
return encodeURIComponent;
}
function partialDecoder(chars) {
var re = new RegExp($.map(chars, encodeURIComponent).join("|"), "ig");
return function(enc) { return enc.replace(re, decodeURIComponent); };
}
}
您可以尝试在初始化中设置unescape: true
选项,看看是否有效。