如果URL中有锚(#),则.load函数出错

时间:2016-06-26 08:21:08

标签: javascript jquery html ajax

我的页面包含一些将由.load()

填充的部分



$(document).ready(function() {
	if (document.getElementById('add_to_userlist')) {
		$('#add_to_userlist').load(script_name + '?' + nv_name_variable + '=' + nv_module_name + '&' + nv_fc_variable + '=v_funcs&mod_list=user_playlist' + '&id={DETAIL.id}' + '&fcheck={DETAIL.check_session}' + '&nocache=' + new Date().getTime());
	}
	if (document.getElementById('favourite-{DETAIL.id}')) {
		$('#favourite-{DETAIL.id}').load(script_name + '?' + nv_name_variable + '=' + nv_module_name + '&' + nv_fc_variable + '=v_funcs&mod_list=get_fav' + '&id={DETAIL.id}' + '&fcheck={DETAIL.check_session}' + '&nocache=' + new Date().getTime());
	}
	$(".bodytext_shorten").shorten({showChars: 200});
});




一切都还可以,但如果此网址中有锚点,例如:

  

http://nukeviet-hvt.rhcloud.com/videos/chuyen-muc-1/sau-tim-thiep-hong-giao-linh-ft-tuan-vu-2.html#comment_box

页面未按预期加载。 ID为#add_to_userlistfavourite-{DETAIL.id}的div只会加载整个页面而不是HTML部分。 因此页面会重新加载并启用我的防洪拦截器。

我认为存在冲突,但不知道如何解决。

Google Chrome在控制台中显示此内容

  

主线程上的同步XMLHttpRequest因不推荐使用   它对最终用户的体验产生不利影响。如需更多帮助,   检查https://xhr.spec.whatwg.org/

1 个答案:

答案 0 :(得分:0)

jQuery load方法不支持URL中的片段标识符,以确定要加载的文档的哪个部分。

它支持的语法是一个空格,后跟一个CSS选择器。

.load("http://nukeviet-hvt.rhcloud.com/videos/chuyen-muc-1/sau-tim-thiep-hong-giao-linh-ft-tuan-vu-2.html #comment_box")

问题并不完全清楚,但看起来你在script_name中有这个值,然后尝试在它之后添加查询字符串。

在网址中,查询字符串必须在之前显示片段标识符。

load()语法中,选择器必须出现在整个URL之后(即在查询字符串之后和任何片段标识符之后)。