如何解析URL进行搜索?

时间:2012-07-18 01:04:13

标签: javascript

我不确定这是否可以在没有任何服务器的javascript中完成。

基本上,我使用Google Maps API在同一页面上生成某些搜索结果,我希望能够创建一个共享按钮,这样当用户点击它时,它会生成一个自定义链接,如www .example.com的/?搜索=阿纳海姆。然后,当用户或其他用户在地址栏中键入该URL时,将生成包含这些结果的页面。

现在,我只在一个html页面上进行搜索,而且我不知道如何制作它以便通过输入链接,它可以更改我的一个html页面的默认主页位置?或者,这是不可能的,我应该做别的事情?

任何建议都将不胜感激。谢谢!!

编辑:这可能有点令人困惑。但基本上,我希望能够以与谷歌地图生成它们相同的方式生成链接,当您单击链接按钮时。

2 个答案:

答案 0 :(得分:0)

您正在寻找的是生成' Deeplinks'

http://en.wikipedia.org/wiki/Deep_linking

您可以在客户端进行此操作。

我建议使用一个好的JS框架来正确解释url并产生相同的结果。

E.g。

http://angularjs.org/

http://backbonejs.org/

我没有足够的Google地图使用经验,但您的JS Framework应该调用GoogleMaps(可能是AJAX),并生成唯一的URL

然后,可以使用这些唯一的URL来跟踪您的应用程序。当您的框架正确解释网址时,他们应该对GoogleMaps进行相同的API调用,它是第一次生成网址。

答案 1 :(得分:0)

jQuery BBQAPI docs)是我最喜欢的工具。

只需为hashchange添加一个事件监听器:

$(window).bind('hashchange', function(e) {
    var q = $.bbq.getState('q');
    if (q) {
        // do your Google Maps search for `q`
    }
});

首次加载页面时触发hashchange。 (该事件不会在页面加载时自动触发,仅在URL更改时 - 无论是以编程方式还是由用户摆弄URL)

$(window).trigger('hashchange');

现在打开 example.com/#q=Anaheim 将搜索阿纳海姆。

对于奖励积分:我假设您的页面有一个文本框,当用户按下Enter键(和/或单击按钮)时会调用该功能。请使用pushState将搜索字词添加到网址,而不是直接调用搜索功能。 (您的页面不会重新加载。)这将使其立即可收藏,因为用户可以将页面添加到他们的书签或从浏览器的地址栏复制URL。

// on key 13 / search button click:
$.bbq.pushState({ q: $('#searchTerm').val() });

这就是你所需要的一切。 hashchange处理程序从那里开始。