寻找一种方法,使用JavaScript/JQuery将URL的哈希/片段中的密钥对解析为对象/关联数组
背景:我有一个HTML页面,可以让您扩展某些内容.由于只需要加载页面的一小部分进行此类扩展,因此通过JavaScript完成,而不是通过指向新的URL/HTML页面.然而,作为奖励,用户能够永久链接到这样的扩展部分,即向其他人发送诸如的URL
并为其他用户立即打开"foobar"类别.这使用parent.location.hash ='foobar',因此该部分很好.
现在的问题是:当用户在页面上关闭此类别时,我想再次清空URL片段,即将http://example.com/#foobar转到http://example.com/以更新永久链接显示.但是,这样做parent.location.hash = ''会导致重新加载整个页面(例如在Firefox 3中),我想避免这种情况.使用window.location.href = '/#'不会触发页面重新加载,但会在URL中留下一些看起来不太好看的"#"符号.那么在流行的浏览器中有没有一种方法可以删除包含"#"符号的URL锚点,而不会触发页面刷新?
是否window.location.hash包含url部分的编码或解码表示?
当我打开相同的URL(http://localhost/something/#%C3%BC其中,%C3%BC转化为ü在Firefox 3.5和Internet Explorer 8),我得到不同的值document.location.hash:
#%C3%BC#ü有没有办法在两个浏览器中获得一个变体?
我们理解哈希用于AJAX搜索,但是感叹号?谁知道?
此外,其搜索表单的"action"属性指向"/ search",但是当您进行搜索时,URL中会出现哈希感叹号.他们只是从"/ search"重定向到"/#!/ search"吗?
注意: q的第二部分仍然没有答案:也就是说,他们是将用户从"/ search"重定向到"/#!/ search",还是将用户发送到"/ search"并在页面上使用JS重写网址? - Crashalot 1月26日23:51
谢谢!
我想要的是拥有更改页面一部分的链接,以及它的动态URL,我可以在其中指定变量等 #calendar=10_2010tabview=tab2
Check this for an exact example: 点击这里进行精确的演示
所以这是我需要的链接格式:
#calendar=10_2010&tabview=tab2
我必须像链接变量calendar和tabview这样我就可以改变一个页面上的多个万物而不realoading.
或者像http://www.wbhomes.com.au这样的其他格式,这正是我想要的,但是第一种格式也很好,但这更美观.
http://wbhomes.com.au/#/propertiesforsale/houseandland/quinnsbeach-waterland1要求
需要从例如邮件的任何地方访问,或者如果我只是在URL栏中写入.
链接应该在历史记录中,因此如果我按下后退或前进按钮,则需要访问该页面.
页面刷新也需要工作.
一些资源:
例子:
www.facebook.com - 您的个人资料页面上的侧边栏链接
www.wbhomes.com.au/ - 100%接近我想要的
一些教程:
请帮我!我从来没有找到任何解决方案来做到这一点,但我不想使用jquery或任何API,或任何库,我想有一个工作Javascript/AJAX和PHP脚本.
我目前正在实现一个JavaScript库,用于跟踪地址栏中哈希部分的更改历史记录.这个想法是你可以在哈希部分保持一个状态,然后使用后退按钮返回到先前的状态.
在大多数最近的浏览器中,这是自动的,您只需轮询location.hash属性以进行更改(在IE8中,您甚至不必这样做;您只需将一个函数附加到onhashchange事件中.)
我想知道的是,有哪些不同的方法可以追踪历史?我已经实现了经过测试可以在Internet Explorer 6/7/8,Firefox和Chrome中运行的功能,但其他浏览器呢?以下是我目前保留历史的方式:
编辑:请参阅下面的答案,而不是浏览各种浏览器.
window.location.hashvs HTML5 history.pushState.使用ajax请求满足url哪个更好,为什么?谢谢.
我正在使用JSDoc.它生成具有句点的ID,如
<a id=".someMethodName"></a>
Run Code Online (Sandbox Code Playgroud)
如果页面的另一部分有
<a href="#.someMethodName"></a>
Run Code Online (Sandbox Code Playgroud)
这非常有效.单击第二个锚点滚动到第一个.
但是,document.querySelectorjQuery都不会找到锚点.
为什么浏览器本身接受此锚点但jQuery和querySelector不接受?
test("document.querySelector('#.someMethodName')", function() {
document.querySelector('#.someMethodName');
});
test("$('#.someMethodName')", function() {
$('#.someMethodName');
});
function test(msg, fn) {
try {
var result = fn();
log(msg, result);
} catch(e) {
log(msg, e);
}
}
function log() {
var pre = document.createElement("pre");
pre.appendChild(document.createTextNode(Array.prototype.join.call(arguments, " ")));
document.body.appendChild(pre);
}Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<a href="#.someMethodName">click here to go to anchor and see errors</a>
<pre>
put
some
text
here
so
the
page
is
long
enough
that
when
we
click
the …Run Code Online (Sandbox Code Playgroud)html jquery css-selectors jquery-selectors fragment-identifier
我想导航到新页面上的锚点,但我希望页面在顶部加载,然后立即平滑滚动到相关的锚点.可以这样做吗?
我是一个完整的Javascript新手.
这是我目前用于在当前页面内平滑滚动的js.我只是在链接上应用了一类"滚动".
非常感谢!
<script>
$(function(){
$('.scroll').on('click',function(e) {
e.preventDefault();
$('html, body').animate({ scrollTop: $($(this).attr('href')).offset().top + 'px' }, 1000, 'swing');
});
});
</script>
Run Code Online (Sandbox Code Playgroud) 如标题所示:如何#从Django视图访问url hash/fragment(破折号后面的部分),因此,我想,来自Django Request对象?
我没有找到有关此处可用文档的足够信息:http://docs.djangoproject.com/en/dev/ref/request-response/
PS假设片段部分被发送到服务器(在我的特定情况下是这样,因为它不是发送请求的浏览器).
html ×4
javascript ×4
url ×4
jquery ×3
ajax ×2
hash ×2
django ×1
django-urls ×1
encoding ×1
hashchange ×1
php ×1
pushstate ×1
python ×1
scroll ×1
twitter ×1